Tomcat 未加载应用程序log4j.properties

Tomcat 未加载应用程序log4j.properties,tomcat,log4j,Tomcat,Log4j,我在AmazonLinux(版本201303)上安装了一个干净的Tomcat7,其中一个应用程序部署为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=DEBU

我在AmazonLinux(版本201303)上安装了一个干净的Tomcat7,其中一个应用程序部署为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
在应用程序中,log4j被实例化为

static Logger logger = Logger.getLogger(ClassName.class.getName());
app.log永远不会被创建。如果我手动创建它,它永远不会写入。唯一正在进行的日志记录是in logs/catalina.out。我错过了什么?我已经读了好几遍了。以下摘录似乎证实了我的方法:

如果您只想在自己的web应用程序中使用log4j,则不需要这些步骤。-在这种情况下,只需将log4j.jar和log4j.properties放入WEB应用程序的WEB-INF/lib和WEB-INF/class中

catalina_home/lib中有一个log4j.jar和log4j.xml,catalina_home/conf中有一个log4j.properties。这些可能与我的WAR中包含的jar冲突吗?我在catalina.out中没有看到任何错误

更新

因此,似乎正在加载WEB-INF/classes中的log4j.properties。我删除了ConsolePender(log4j.appender.A1),日志消息不再出现在catalina.out中。我把它放回去,日志信息又出现在catalina.out中。奇怪的是转换模式似乎与日志不匹配。是否应该
%d{yyyy-MM-dd}-%t-%x-%5p-%10c:%m%n
生成类似
2013-07-10信息类名日志消息的内容?相反,我看到的是
14:39:29180信息[ClassName]日志消息

更新2

我找到了答案。${catalina.home}/lib中有一个log4j.xml,它在容器级别配置log4j。我想如果我真的对我在Tomcat中所做的事情有所了解,我会很快明白的。一旦我开始配置lib/log4j.xml,我就得到了预期的结果。我仍然有点困惑,为什么我的应用程序继承了这个配置,而不是使用自己的log4j.properties。哦,好吧,我达到了预期的结果,所以是时候继续了。

请尝试使用这个(第一次使用日志文件的物理路径进行测试)并尝试使用不同版本的log4jjar

Jar版本log4j-1.2.14.Jar

log4j.watch=true

log4j.readtime=30000

log4j.rootCategory=DEBUG,applicationlogging log4j.rootCategory=DEBUG,strutsloging log4j.category.applicationlogging=调试,applicationlogging log4j.category.org=调试,strutsloging

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.strutsloging=false log4j.appender.applicationlogging=org.apache.log4j.RollingFileAppender log4j.appender.applicationlogging.File=C:/logs/app.log log4j.appender.applicationloging.MaxFileSize=3000KB log4j.appender.applicationlogging.MaxBackupIndex=50 log4j.appender.applicationlogging.layout=org.apache.log4j.PatternLayout log4j.appender.applicationlogging.layout.ConversionPattern=%d-%m%n


${catalina.home}/lib中有一个log4j.xml,它在容器级别配置log4j。我们只部署了一个应用程序,因此使用lib/log4j.xml可以很好地用于我的用例。

此应用程序没有“主属性文件”。log4j.properties是这个应用程序使用的唯一属性文件。我最终找到了它。在初始化我的应用程序之前,log4j是在容器级别配置的。谢谢你试图帮助我。