我有一个部署到Tomcat 7
服务器的网络应用程序。我的应用使用log4j
和file appender
。但是,并非所有日志消息都会写入文件。
在我的课程中,我有:
log4j-1.2.14.jar
slf4j-api-1.6.1.jar
slf4j-log4j12-1.6.1.jar
我的log4j.properties
文件在我的本地计算机上正常运行,并且部署正常。
我看到正在写入catalina.out
的应用程序生成的错误消息未写入我的log4j log
。 catalina.out
中的日志消息看起来来自其他一些日志记录框架,因为输出模式的格式与我的log4j
模式不同。我在catalina.log
中看到的日志记录就像:
Nov 4, 2011 11:05:31 AM org.apache.myfaces.shared_impl.util.StateUtils reconstruct
SEVERE
我的log4j模式如下:
2011-11-03 16:42:09,336 ["http-bio-8080"-exec-13] ERROR
某些日志记录显示在我的log4j
文件日志中,但不是全部日志记录。从我读过的内容来看,slf4j
只需要那些罐子来汇集日志输出。有什么想法吗?
答案 0 :(得分:12)
看起来StateUtils类正在使用java.util.logging(jul)。按理说其他myfaces类也使用jul。因此,您可能希望通过SLF4J汇集jul日志。请查看bridging legacy APIs,尤其是jul-to-slf4j
网桥。
安装jul-to-slf4j
时,请参阅SLF4JBridgeHandler javadocs了解使用说明。
答案 1 :(得分:2)
尝试将jcl-over-slf4j作为依赖项。 myfaces可能正在使用commons-logging。
答案 2 :(得分:2)
根据http://adfinmunich.blogspot.de/2012/03/how-to-configure-tomcat-to-use-slf4j.html中描述的步骤配置tomcat服务器。此博客条目描述了如何通过slf4j替换java.util.logging(使用外观后面的log4j)。