日志记录器
日志记录器作为任何一个系统最重要的组件,可以说没有一套完善的日志组件的系统,是无法投入使用的。
tomcat开发者也对其做出了一个相当优雅的设计实现。
Logger接口
org.apache.catalina.Logger接口描述了一个通用的信息与异常的Logger,理论上logger能被用在任何container上,但是实际的典型应用中,Logger只会用在Context或更高的级别容器上。
1 | public interface Logger { |
Tomcat的日志记录器
LoggerBase类
LoggerBase这个抽象类提供了Logger接口的基础实现,但将核心方法log(String)交由子类实现,类似于模板方法模式。
SystemOutLogger/SystemErrLogger类
继承自LoggerBase,分别以System.out.println(String)/System.err.println(String)实现了抽象方法log(String)。
FileLogger类
这个类将servlet容器中接受到的日志消息写到一个文件中,并且可以选择添加时间戳,并且会根据日期的变化创建新的文件,同时提供了文件名称的前缀与后缀设置接口。
这个类的具体实现无需赘述,可以看出,tomcat引擎级别的日志catalina.2016-11-08.log,主机级别的日志localhost.2016-11-08.txt都是由此类生成的。具体设置在$CATALINA_BASE/conf/logging.properties。