如何控制第三方库中的日志记录

时间:2015-11-24 09:47:15

标签: java tomcat logging slf4j

我有一个运行基于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

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

我正在使用通过Maven获得的slf4j-apislf4j-log4j个罐子。

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

1 个答案:

答案 0 :(得分:1)

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

您可以使用SLF4J重定向日志记录,请参阅SLF4J - Bridging legacy APIs

Jakarta Commons Logging的重定向:

  

为了便于从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的处理程序。根记录器

     

handlers = org.slf4j.bridge.SLF4JBridgeHandler

有关java.util.Logging的配置,请参阅JUL API

Apache CXF等一些库支持多个日志记录框架,请参阅Apache CXF - Debugging and Logging