Tomcat使用Slf4j和Log4j进行日志记录

时间:2011-11-04 16:30:09

标签: java tomcat log4j slf4j

我有一个部署到Tomcat 7服务器的网络应用程序。我的应用使用log4jfile appender。但是,并非所有日志消息都会写入文件。

在我的课程中,我有:

log4j-1.2.14.jar
slf4j-api-1.6.1.jar
slf4j-log4j12-1.6.1.jar

我的log4j.properties文件在我的本地计算机上正常运行,并且部署正常。

我看到正在写入catalina.out的应用程序生成的错误消息未写入我的log4j logcatalina.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只需要那些罐子来汇集日志输出。有什么想法吗?

3 个答案:

答案 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。

检查slf4j文档:http://www.slf4j.org/legacy.html#jcl-over-slf4j

答案 2 :(得分:2)

根据http://adfinmunich.blogspot.de/2012/03/how-to-configure-tomcat-to-use-slf4j.html中描述的步骤配置tomcat服务器。此博客条目描述了如何通过slf4j替换java.util.logging(使用外观后面的log4j)。