tomcat源码阅读之日志记录器(Logger)
UML图:
1、Logger接口中定义了日志的级别:FATAL、ERROR、WARNING、INFORMATION、DEBUG,通过接口函数getVerbosity获取日志级别,setVerbosity设置日志级别;
2、接口中提供一组重载的log方法来记录日志,在LoggerBase实现类中除了log(String msg)方法没有实现外,其他重载的log方法均实现为调用这个方法来实现日志的记录;
3、在LoggerBase类中,默认的日志级别是ERROR;带日志级别参数的log方法在记录日志时,如果参数的日志级别的数字比该日志记录器实例中设定的等级低,才会记录该消息,否则,会忽略该条记录。代码如下:
4、FileLogger日志记录器为将日志输出到文件中;SystemErrLogger和SystemOutLogger均为在控制台上输出日志,区别只是一个输出错误信息日志,一个输出正常日志信息,代码如下:
FileLogger的实现:
1、日志文件默认记录到logs文件夹下,扩展名默认为.log,并且文件名带有日期前缀,在每次记录日志时,会拿系统当前日期和日志记录日期做比较,如果不相同则关闭当前日志文件并重新创建新的日志文件,代码如下:
可以看到在日期发生改变时,更新date变量,并调用open方法创建新的日志文件;
2、open方法首先检查要创建的日志文件所在的目录是否存在,如果不存在则创建,然后根据prefix、date、suffix三个变量生成新的日志文件名并创建新的日志文件;最后通过FileWritter把信息写入到文件中;代码如下: