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

我有一个运行基于 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.logger.org.apache = WARN添加到我的log4j.properties,我仍然会在Tomcat启动期间从org.apache.*获取INFO日志到Eclipse控制台错误流.

我正在使用通过Maven获得的slf4j-api和slf4j-log4j罐子.

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

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

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

Jakarta Commons Logging的重定向:

To ease migration to SLF4J from JCL, SLF4J distributions include the jar file jcl-over-slf4j.jar. This jar file is intended as a drop-in replacement for JCL version 1.1.1. It implements the public API of JCL but using SLF4J underneath, hence the name “JCL over SLF4J.”

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

Installation via logging.properties configuration file:

// register SLF4JBridgeHandler as handler for the j.u.l. root logger

handlers = org.slf4j.bridge.SLF4JBridgeHandler

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

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

点赞