一直想研究下tomcat的日志管理,今天终于抽出时间,通过上网查资料和亲自动手实践,终于把这一部分搞明白了。本人用的tomcat版本是7.0.55,下面写的内容也是基于此版本的配置,7以下的可能有些不同,这里就不做说明了。如有不正确的部分,欢迎大家指正。
注:关于tomcat7日志管理的部分内容来自于Apache tomcat 7.0文档中logging部分,想看源文档的可以移步:http://tomcat.apache.org/tomcat-7.0-doc/logging.html
—————————————————————————我是正文分割线—————————————————————————
下面是tomcat日志基本知识科普时间,已经了解的请跳过:
tomcat上日志的实现基于Apache Commons Logging库,因此需要引入commons-logging包(我使用的是commons-logging-1.2.jar)
在tomcat上运行web项目记录日志有三种方式:
- 使用系统jdk自带的logging API: java.util.logging;
- 使用java servlet规范提供的logging API: javax.servlet.ServletContext.log(..)
- 选择使用其他的日志框架,如log4j
不同项目中使用的同一日志框架之间是相互独立的,但如果项目直接或间接地使用了java.util.logging来记录日志的话除外,因为它由系统统一加载并在不同的项目之间共享。
1.使用java.util.logging
java.util.logging API的默认实现功能有限,因此tomcat的默认配置中,将日志管理(LogManager)的实现替换为了另一个实现容器JULI,它同样支持标准JDK java.util.logging的配置机制,不同的是JULI的每一个类加载属性文件都可以被设置,并可以在其中定义处理器,这样就给了开发者更大的自由度。
JULI的日志配置分为全局配置和项目配置。全局配置位于tomcat的配置目录${catalina.base}/conf/logging.properties文件,如果该文件未配置或不可读,那么tomcat将会使用JRE中的默认日志配置,可以在${java.home}/lib/logging.properties查看配置文件的内容;项目配置则是针对不同的项目,配置文件位于WEB-INFO/classes/logging.properties.
下面代码是JRE中的日志配置文件的部分内容,可以看出其中的日志处理器为ConsoleHandler. 能够接受System.err错误日志
handlers= java.util.logging.ConsoleHandler
# To also add the FileHandler, use the following line instead.
#handlers= java.util.logging.FileHandler, java.util.logging.ConsoleHandler
# Default global logging level.
# This specifies which kinds of events are logged across
# all loggers. For any given facility thi