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

Java 如何控制第三方库中的日志记录,java,tomcat,logging,slf4j,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.Tar

我有一个运行基于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
这可以正确地记录我自己的代码,但似乎对我正在使用的各种库中的日志记录没有任何影响。例如,在Tomcat启动期间,我仍然从Eclipse控制台错误流中获取
org.apache.*
的信息日志,即使我将
log4j.logger.org.apache=WARN
添加到log4j.properties中

我使用的是通过Maven获得的
slf4japi
slf4j-log4j
jars


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

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

您可以使用重定向日志记录,请参阅:

Jakarta Commons日志的重定向:

为了便于从JCL迁移到SLF4J,SLF4J发行版包括jar文件
JCL-over-SLF4J.jar
。此jar文件旨在作为JCL版本1.1.1的替代品。它实现了JCL的公共API,但在下面使用了SLF4J,因此命名为“JCL over SLF4J”

重定向
java.util.Logging
():

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

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

handlers=org.slf4j.bridge.SLF4JBridgeHandler

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


有些库(如ApacheCXF)支持多个日志框架,请参阅

事实上,我已经在使用slf4j了,没有意识到它和log4j不一样。你能扩展一下使用slf4j重定向日志吗?仅仅链接到其他页面并不是一个正确的答案。