2015-11-24 146 views
3

我有一个运行基于Spring的servlet的Tomcat服务器。如何控制第三方库中的日志记录

我已经设置了[project root]/src/log4j.properties文件,如下:

# Root logger option 
log4j.rootLogger=WARN, stdout 

# Redirect log messages to console 
log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.Target=System.out 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=%-5p %d{HH:mm:ss} %m [%c{3}:%L]%n 

log4j.logger.com.martincarney.bugTracker=DEBUG 
log4j.logger.com.martincarney.bugTracker.controller=ERROR 

这正确地记录自己的代码就好了,但似乎没有任何效果从我使用的各种库中记录。例如,即使在我的log4j.properties中添加了log4j.logger.org.apache=WARN,在Tomcat启动过程中,我仍然从org.apache.*获得INFO日志到Eclipse控制台错误流。

我使用的是通过Maven获得的slf4j-apislf4j-log4j罐。

如何在我自己的代码之外控制日志级别和目标?

回答

1

一些图书馆使用其他日志框架,如java.util.logging。对Jakarta Commons日志

重定向:

您可以用SLF4J重定向日志,看到SLF4J - Bridging legacy APIs

为了便于迁移从JCL到SLF4J,SLF4J分布包括jar文件jcl-over-slf4j.jar。该jar文件旨在作为JCL版本1.1.1的直接替代品。它实现了JCL的公共API,但是使用了SLF4J,因此名称为“JCL over SLF4J”。

重定向为java.util.LoggingSLF4J API):

经由logging.properties配置文件安装:

//寄存器SLF4JBridgeHandler作为处理程序j.u.l.根记录

处理器= org.slf4j.bridge.SLF4JBridgeHandler

对于java.util.Logging配置见JUL API

一些类似Apache CXF的库支持多个日志框架,请参见Apache CXF - Debugging and Logging

+0

问题其实我已经在使用slf4j,没有意识到它和log4j不一样。 –

+1

您可以扩展使用SLF4J重定向日志记录吗?只是链接到其他页面并不构成正确的StackOverflow答案。 –

相关问题