log4j干扰-级别始终设置为“ OFF”
我试图在我的应用程序中设置log4j,但我的第三方JAR之一似乎以某种方式将日志级别设置为“
OFF”。仅当执行该库中的代码时才会发生。我不知道它如何做到这一点,因为我没有使用它知道名称的记录器,也没有使用根记录器。我为此花了5个小时,到目前为止,我唯一的成就就是获得超过9000的挫败感。
我在Windows 7 64位,Java 6 u23上使用最新的Tomcat(7.0.37)。
log4j.properties:
log4j.logger.com.foo.bar.SearchAndReport=TRACE, stdout, filelog4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=D:/logTest.log
log4j.appender.file.MaxFileSize=100KB
log4j.appender.file.MaxBackupIndex=1
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=[%p] %d{dd MMM yyyy HH:mm:ss,SSS} - %C{2}.%M() - %m %n
然后在我的Servlet中进行测试,我有:
Logger log = Logger.getLogger(SearchAndReport.class);System.out.println(log.getLevel());
该代码在每次运行DoPost或DoGet时运行,并且级别保持在我设置的级别(TRACE)上,直到第三方代码运行并将其关闭为止。
我的问题是:
- 另一个记录器如何干扰我命名和设置的记录器?
- 我如何才能阻止这种情况的发生,并强行设置我的水平?
谢谢 :)
回答:
Log4j配置未合并,似乎其他配置存在并且被读取而不是您的配置,或者该配置被覆盖。在JAR中嵌入log4j配置文件是许多类似问题的根源。
您可以使用
org.apache.log4j.PropertyConfigurator
或在代码中重新加载配置org.apache.log4j.xml.DOMConfigurator
。另外,请检查您的第三方代码是否未使用它们。
以上是 log4j干扰-级别始终设置为“ OFF” 的全部内容, 来源链接: utcz.com/qa/409691.html