我在amazon linux(版本201303)上安装了一个干净的tomcat 7,其中一个应用程序部署为ROOT。 log4j-1.2.17.jar驻留在WEB-INF / lib中。 WEB-INF / classes中有一个log4j.properties文件,其中包含以下内容:
log4j.rootLogger=DEBUG,A1, A2
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.Threshold=DEBUG
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d{yyyy-MM-dd}-%t-%x-%-5p-%-10c:%m%n
log4j.appender.A2.File=${catalina.home}/logs/app.log
log4j.appender.A2=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A2.DatePattern='.' yyyy-MM-dd
log4j.appender.A2.MaxFileSize=10MB
log4j.appender.A2.MaxBackupIndex=99
log4j.appender.A2.Append=true
log4j.appender.A2.layout=org.apache.log4j.PatternLayout
log4j.appender.A2.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss,SSS}-%t-%x-%-5p-%-10c:%m%n
在应用程序中,使用
实例化log4jstatic Logger logger = Logger.getLogger(ClassName.class.getName());
app.log永远不会被创建。如果我手动创建它,它永远不会被写入。唯一的日志记录是在logs / catalina.out中。我错过了什么?我已多次阅读http://tomcat.apache.org/tomcat-7.0-doc/logging.html。以下摘录似乎证实了我的方法:
如果您只想在自己的Web应用程序中使用log4j,则不需要执行这些步骤。 - 在这种情况下,只需将log4j.jar和log4j.properties放入Web应用程序的WEB-INF / lib和WEB-INF / classes中。
catalina_home / lib中有一个log4j.jar和log4j.xml,以及catalina_home / conf中的log4j.properties。那些与我的WAR中包含的罐子有冲突吗?我没有在catalina.out中看到任何错误。
更新
因此,似乎正在加载WEB-INF / classes中的log4j.properties。我删除了ConsoleAppender(log4j.appender.A1)并停止出现在catalina.out中的日志消息。我把它放回去,日志信息重新出现在catalina.out中。奇怪的是转换模式似乎与日志不匹配。 %d{yyyy-MM-dd}-%t-%x-%-5p-%-10c:%m%n
不应生成2013-07-10 INFO ClassName Log message
之类的内容吗?相反,我看到14:39:29,180 INFO [ClassName] Log message
。
更新2
我找到了答案。 $ {catalina.home} / lib中有一个log4j.xml,它在容器级别配置log4j。我想如果我真的对Tomcat中的新功能感到满意,我会早点把它弄清楚。一旦我开始配置lib / log4j.xml,我得到了预期的结果。我仍然有点困惑为什么我的应用程序继承了该配置而不是使用自己的log4j.properties。哦,我实现了预期的结果,所以有时间继续前进。
答案 0 :(得分:0)
请尝试使用此功能(首次使用物理路径测试日志文件)并尝试使用不同版本的log4j jar
Jar版本log4j-1.2.14.jar
log4j.watch =真
log4j.readtime = 30000
log4j.rootCategory = DEBUG,applicationlogging log4j.rootCategory = DEBUG,strutslogging log4j.category.applicationlogging = DEBUG,applicationlogging log4j.category.org = DEBUG,strutslogging
log4j.logger.org.apache.commons.httpclient = DEBUG log4j.logger.httpclient.wire.header = OFF log4j.logger.httpclient.wire.content = OFF log4j.additivity.applicationlogging = false log4j.additivity.strutslogging = false log4j.appender.applicationlogging = org.apache.log4j.RollingFileAppender进行 log4j.appender.applicationlogging.File = C:/logs/app.log log4j.appender.applicationlogging.MaxFileSize = 3000KB log4j.appender.applicationlogging.MaxBackupIndex = 50 log4j.appender.applicationlogging.layout = org.apache.log4j.PatternLayout log4j.appender.applicationlogging.layout.ConversionPattern =%d - %m%n
答案 1 :(得分:0)
$ {catalina.home} / lib中有一个log4j.xml正在容器级别配置log4j。我们只部署了一个应用程序,因此使用lib / log4j.xml非常适合我的用例。