自己翻译的官方文档:tomcat配置log4j

本文介绍如何配置tomcat使用log4j来替代java.util.logging来产生tomcat本身的日志信息。

说明:只有当我们需要重新配置tomcat来使用Apache log4j来记录tomcat本身的日志时才需要这部分所讲内容。当仅仅想在我们的web应用程序中使用log4j时这些操作不是必要的。如果是仅仅想在web应用中使用log4j,只要把log4j.jar和log4j.properties放到web应用的WEB-INF/lib和WEB-INF/classes目录下即可。

 

下面的步骤介绍了在tomcat中配置log4j来输出tomcat内部日志。

1、创建一个包含下面内容的名为log4j.properties的文件,并且把它存储在$CATALINA_BASE/lib目录下。

log4j.rootLogger=INFO, CATALINA

# Define all the appenders
log4j.appender.CATALINA=org.apache.log4j.DailyRollingFileAppender
log4j.appender.CATALINA.File=${catalina.base}/logs/catalina.
log4j.appender.CATALINA.Append=true
log4j.appender.CATALINA.Encoding=UTF-8
# Roll-over the log once per day
log4j.appender.CATALINA.DatePattern='.'yyyy-MM-dd'.log'
log4j.appender.CATALINA.layout = org.apache.log4j.PatternLayout
log4j.appender.CATALINA.layout.ConversionPattern = %d [%t] %-5p %c- %m%n

log4j.appender.LOCALHOST=org.apache.log4j.DailyRollingFileAppender
log4j.appender.LOCALHOST.File=${catalina.base}/logs/localhost.
log4j.appender.LOCALHOST.Append=true
log4j.appender.LOCALHOST.Encoding=UTF-8
log4j.appender.LOCALHOST.DatePattern='.'yyyy-MM-dd'.log'
log4j.appender.LOCALHOST.layout = org.apache.log4j.PatternLayout
log4j.appender.LOCALHOST.layout.ConversionPattern = %d [%t] %-5p %c- %m%n

log4j.appender.MANAGER=org.apache.log4j.DailyRollingFileAppender
log4j.appender.MANAGER.File=${catalina.base}/logs/manager.
log4j.appender.MANAGER.Append=true
log4j.appender.MANAGER.Encoding=UTF-8
log4j.appender.MANAGER.DatePattern='.'yyyy-MM-dd'.log'
log4j.appender.MANAGER.layout = org.apache.log4j.PatternLayout
log4j.appender.MANAGER.layout.ConversionPattern = %d [%t] %-5p %c- %m%n

log4j.appender.HOST-MANAGER=org.apache.log4j.DailyRollingFileAppender
log4j.appender.HOST-MANAGER.File=${catalina.base}/logs/host-manager.
log4j.appender.HOST-MANAGER.Append=true
log4j.appender.HOST-MANAGER.Encoding=UTF-8
log4j.appender.HOST-MANAGER.DatePattern='.'yyyy-MM-dd'.log'
log4j.appender.HOST-MANAGER.layout = org.apache.log4j.PatternLayout
log4j.appender.HOST-MANAGER.layout.ConversionPattern = %d [%t] %-5p %c- %m%n

log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Encoding=UTF-8
log4j.appender.CONSOLE.layout = org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern = %d [%t] %-5p %c- %m%n

# Configure which loggers log to which appenders
log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost]=INFO, LOCALHOST
log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager]=\
  INFO, MANAGER
log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager]=\
  INFO, HOST-MANAGER

2、下载Log4j(1.2或者是更高版本)。

3、下载或者是编译tomcat-juli.jar和tomcat-juli-adapters.jar,这两个组件对于tomcat来说是附件组件。详情查看附件组件文档

这个tomcat-juli.jar与tomcat默认的同名文件不同。它包括Apache Commons Logging的实现,所以我们可以用它来呈现log4j日志信息并且配置log4j。

4、如果我们想在tomcat全局内配置并且使用log4j:

   l  把log4j.jar放到$CATALINA_HOME/lib下面;

   l  使用从tomcat官方网站上下载的附加组件tomcat-juli.jar替换$CATALINA_HOME/bin/tomcat-juli.jar;

   l  把附件组件tomcat-juli-adapters.jar放到$CATALINA_HOME/lib目录下;

5、如果我们的tomcat拥有不同的$CATALINA_HOME和$CATALINA_BASE目录,并且我们只想在$CATALINA_BASE目录下配置使用log4j。

   l  如果$CATALINA_BASE/bin和$CATALINA_BASE/lib目录不存在,那么首先创建它们;

   l  把log4j.jar放到$CATALINA_BASE/lib目录下;

   l  使用附加的tomcat-juli.jar替换$CATALINA_BASE/bin/tomcat-juli.jar;

   l  把附加的tomcat-juli-adapters.jar放到$CATALINA_BASE/lib目录下;

   l  如果我们是在安全模式下运行,我们需要编辑$CATALINA_BASE/conf/catalina.policy文件使tomcat可以使用不同的tomcat-juli.jar;

   l  旧版本的tomcat.juli.jar仍然被bootstrap的manifest引用,因此它会在tomcat的类路径下隐式的表现出来。tomcat启动脚本把$CATALINA_BASE/bin/tomcat-juli.jar配置在bootstrap.jar前面,所以它应该有更高的优先级。因此考虑到移除不需要的tomcat-juli.jar副本(把它copy到不使用log4j的其它任何$CATALINA_BASE目录下),这应该没什么问题。Tomcat 7不存在这个问题。

6、删除$CATALINA_BASE/conf/logging.properties文件来防止java.util.logging产生零长度的日志文件。

7、启动tomcat。


这个log4j配置借鉴了tomcat默认的java.util.logging的配置:manager和host-manager 应用各自都可以获得一份日志文件,任何其它的信息都输出到catalina.log文件。每个日志文件每天会滚动生成新的带有日期时间戳的日志文件。

   我们必须更加谨慎的了解那个包包含日志。Tomcat通过引擎和主机名来定义loggers。比如,为了详细的了解本地Catalina日志,把这些加到上面log4j.properties文件的结尾。注意由于在基于XML的log4j配置文件中,存在使用名字转换的已知问题,因此我们建议大家使用上面讲过的资源文件(properties)直到将来log4j版本允许这种转换。

log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost]=DEBUG
log4j.logger.org.apache.catalina.core=DEBUG
log4j.logger.org.apache.catalina.session=DEBUG

警告:DEBUG级别的日志会产生上M的日志,并且会拖慢tomcat的启动过程。这个级别的警告只有在必须调试tomcat内部操作的时候才可以使用。

我们的web应用程序应该会使用它们自己的log4j配置。但是上面的配置依然有效。我们可以把一个类似的log4j.properties文件放到我们web应用的WEB-INF/classes目录下,而且把log4jx.y.z.jar放到WEB-INF/lib目录下。然后指定我们的包级别的日志输出。这是一个基本的不需要Common-Logging的log4j配置,我们应该访问log4jdocumentation来获取更多的配置选项。这篇文章仅仅是为了自举过程的指导。

   附加说明:

   这会通过Common类库加载器把log4j库暴露给web应用。详细信息查看classloading文档。

   出于这个原因,使用Apache Commons Logging类库的web应用和类库会自动的把log4j作为主要的日志实现。

   对于那些直接使用java.util.logging的web应用,java.util.logging仍然有效。${catalina.base}/conf/logging.properties文件仍然会被tomcat启动脚本引用。

   上面的一步提到删除${catalina.base}/conf/logging.properties文件,仅仅会导致java.util.logging会滚到JRE所配置的默认配置,它使用ConsoleHandler并且不产生任何文件。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值