【发布时间】:2013-03-19 12:19:51
【问题描述】:
我正在尝试在我的应用程序中设置 log4j,而我的一个第三方 JAR 似乎以某种方式不断将我的日志级别设置为“关闭”。它仅在执行该库中的代码时发生。我不知道它是如何做到这一点的,因为我没有使用它知道名称的记录器,而且我没有使用根记录器。我在这上面花了 5 个小时,到目前为止,我唯一的成就是获得了超过 9000 的挫败感。
我在 windows 7 64 位 Java 6 u23 上使用最新的 Tomcat (7.0.37)。
log4j.properties:
log4j.logger.com.foo.bar.SearchAndReport=TRACE, stdout, file
log4j.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) 直到第三方代码运行并将其关闭。
我的问题是:
- 其他记录器如何干扰我自己命名和设置的记录器?
- 我怎样才能阻止这种情况发生,并强制我设置的级别?
谢谢:)
【问题讨论】:
-
您使用的第三方库是什么?
标签: java tomcat servlets log4j