Chapter 7 : Logger
Logger Interface:
public interface Logger {
public static final int FATAL = Integer.MIN_VALUE;
public static final int ERROR = 1;
public static final int WARNING = 2;
public static final int INFORMATION = 3;
public static final int DEBUG = 4;
public Container getContainer();
public void setContainer(Container container);
public String getInfo();
public int getVerbosity();
public void setVerbosity(int verbosity);
public void addPropertyChangeListener(PropertyChangeListener listener);
public void log(String message);
public void log(Exception exception, String msg);
public void log(String message, Throwable throwable);
public void log(String message, int verbosity);
public void log(String message, Throwable throwable, int verbosity);
public void removePropertyChangeListener(PropertyChangeListener listener);
}
这个接口有一个抽象类实现:LoggerBase类。在tomcat4中,LoggerBase是比较简单的。然而在tomcat5中要复杂很多,因为tomcat5中引入了MBean。在第20章中,会讨论MBean的问题。
Tomcat4中,有三个logger类。SytemOutLogger, SystemErrLogger, FileLogger。都比较简单。
Bootstrap中,logger是这样被注入context容器的:
// ------ add logger --------
System.setProperty("catalina.base", System.getProperty("user.dir"));
System.err.println(System.getProperty("user.dir"));
FileLogger logger = new FileLogger();
logger.setPrefix("FileLog_");
logger.setSuffix(".txt");
logger.setTimestamp(true);
logger.setDirectory("webroot");
context.setLogger(logger);
//---------------------------