如何控制登录第三方库



我有一个Tomcat服务器,运行一个基于Spring的servlet。

我已经将[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

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

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

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

一些库使用其他日志框架,如java.util.logging

您可以使用SLF4J重定向日志记录,请参阅SLF4J-桥接遗留API:

雅加达公共日志重定向:

为了方便从JCL迁移到SLF4J,SLF4J发行版包含jar文件jcl-over-slf4j.jar。这个jar文件旨在作为JCL 1.1.1版本的一个替代品。它实现了JCL的公共API,但在下面使用SLF4J,因此命名为"JCL over SLF4J"

java.util.Logging(SLF4J API)重定向:

通过logging.properties配置文件安装:

//将SLF4JBridgeHandler注册为j.u.l.根记录器的处理程序

handlers=org.slf4j.bridge.SLF4JBridgeHandler

关于java.util.Logging的配置,请参见JUL API。

有些库(如ApacheCXF)支持多个日志记录框架,请参阅ApacheCXF-调试和日志记录。

最新更新