log4j的调试消息在控制台没有显示尽管isDebugEnabled
我用我的项目中下面的代码记录与log4j的调试信息是否真实log4j的调试消息在控制台没有显示尽管isDebugEnabled
private static final Logger LOG = Logger.getLogger(MyClass.class)
// ...
if(LOG.isDebugEnabled()) {
LOG.debug("my log message");
}
我可以证实,我的log4j的配置是正确的,加入一个破发点在调试消息被写入的那一行,即LOG.isDebugEnabled()
确实返回true
。 有趣的是,我的调试消息并不在我的IDE(的IntelliJ)的控制台显示,改变LOG.debug()
到LOG.info()
然而,当,不出所料记录的信息消息。
任何想法,我应该寻找以找出哪里出了问题?
编辑:这里是我的log4j.properties文件
log4j.appender.Stdout=org.apache.log4j.ConsoleAppender
log4j.appender.Stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.Stdout.layout.conversionPattern=%-5p [%d{dd.MM.yy HH:mm:ss}] %C{1} - %m [thread: %t]\n
log4j.appender.Stdout.threshold=info
log4j.appender.StandaloneFile=org.apache.log4j.RollingFileAppender
log4j.appender.StandaloneFile.File=logs/standalone.log
log4j.appender.StandaloneFile.MaxFileSize=5MB
log4j.appender.StandaloneFile.MaxBackupIndex=20
log4j.appender.StandaloneFile.layout=org.apache.log4j.PatternLayout
log4j.appender.StandaloneFile.layout.ConversionPattern=%-5p [%d{dd.MM.yy HH:mm:ss}] %C{1} - %m [thread: %t]\n
log4j.appender.StandaloneFile.threshold=info
log4j.rootLogger=info, Stdout, StandaloneFile
log4j.logger.com.myPacke.package1=info, Stdout, StandaloneFile
log4j.logger.com.myPacke.package2=DEBUG
log4j.appender.Stdout.threshold=info
加入
应该是:
log4j.appender.Stdout.threshold=debug
您只是将控制台阈值设置为info,因此您没有获取调试级别日志。
要知道你还设置了RollingFileAppender进行阈值作为信息Ç@Stephen评论。
+1 - 启用调试日志记录(从根记录器开始)...但是他的两个appender都在“INFO”下过滤掉日志事件。 – 2013-02-26 10:44:32
哎呀......当然!一个人应该认为命名一个配置参数'threshold'应该是显而易见的......我只是没有注意到它:(非常感谢!在阅读了[This SO answer]之后(http://stackoverflow.com/questions/) 5119883/log4j-what-is-threshold)我现在实际上明白了这里究竟发生了什么。 – peterp 2013-02-26 10:50:23
确保配置低于附加器......我们已经使用的log4j.xml,所以我从XML
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.out" />
<param name="Threshold" value="info" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-5p: %c - %m%n" />
</layout>
</appender>
<appender name="logfile" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="log/dcm_migration.log" />
<param name="Append" value="false" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %-5p [%c{1}] %m %n" />
</layout>
</appender>
你可以添加log4j.properties吗?也许你错过了一个appender ... – BigMike 2013-02-26 10:35:29
对不起,以为我们不需要这个,因为'isDebugEnabled'已经返回'true',但是当然,你是对的。我已经更新了这个问题。 – peterp 2013-02-26 10:41:30
isDebugEnabled()是不够的,你可能有过滤器(如你的确)。请参阅StephenC评论巴拉吉的答案。 – BigMike 2013-02-26 10:47:01