问题 尽管isDebugEnabled为true,但log4j调试消息未在控制台中显示


我在我的项目中使用以下代码来使用log4j记录调试消息

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

4328
2018-02-26 10:34


起源

你能添加log4j.properties吗?也许你错过了一个appender ...... - BigMike
对不起,以为我们不需要这个,因为 isDebugEnabled 回 true 已经,但当然,你是对的。我已经更新了这个问题。 - peterp
isDebugEnabled()是不够的,你可能有过滤器(你确实有)。请参阅StephenC对baraky回答的评论。 - BigMike


答案:


log4j.appender.Stdout.threshold=info

应该:

log4j.appender.Stdout.threshold=debug

您只需将控制台阈值设置为info,这样您就无法获得调试级别日志。

请注意,您还将RollingFileAppender阈值设置为@Stephen C评论的信息。


9
2018-02-26 10:41



+1 - 启用调试日志记录(从根记录器向下)...但是他的两个appender都过滤掉“INFO”下面的日志事件。 - Stephen C
哎哟...当然!应该考虑命名一个配置参数 threshold 应该是显而易见的......我只是没注意到它:(非常感谢!经过额外的阅读 这个答案 我现在真的明白这到底发生了什么。 - peterp


确保你的配置低于appender ...我们使用了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>

1
2018-02-26 10:40