Logback DynamicThresholdFilter:无法在调试文件中看到调试日志

时间:2019-10-09 16:56:47

标签: logging logback

这是我的用例。

根据某些类型的请求,我需要调试日志。这些应转到单独的文件。我正在尝试使用DynamicThresholdFilter实现这一目标,而这就是我的logback.xml的样子

   <?xml version="1.0" encoding="UTF-8"?>
    <configuration>

    <turboFilter class="ch.qos.logback.classic.turbo.DynamicThresholdFilter">
        <Key>debug</Key>
        <DefaultThreshold>INFO</DefaultThreshold>
        <OnHigherOrEqual>NEUTRAL</OnHigherOrEqual>
        <OnLower>ACCEPT</OnLower>
        <MDCValueLevelPair>
            <value>true</value>
            <level>DEBUG</level>
        </MDCValueLevelPair>
    </turboFilter>

    <appender name="JSONFILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>main.log.json</file>
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>INFO</level>
        </filter>

    </appender>


    <appender name="DEBUGFILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>debug.log</file>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>INFO</level>
            <onMatch>DENY</onMatch>
        </filter>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>DEBUG</level>
            <onMatch>ACCEPT</onMatch>
        </filter>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>TRACE</level>
            <onMatch>ACCEPT</onMatch>
        </filter>


    </appender>
    ....
    <root level="INFO">
     <appender-ref ref="JSONFILE" />
     <appender-ref ref="DEBUGFILE" />
  </root>
</configuration>

在应用程序代码中,有以下一行

if(Boolean.parseBoolean(MDC.get("debug"))) {
      logger.info("Setting log level to Debug");
      logger.debug("This should appear in debug logs ");
    }

正在发生的事情是,我可以看到信息级别日志logger.info("Setting log level to Debug");出现在main.log.json中,但是调试级别日志(即logger.debug("This should appear in debug logs ");没有出现在debug.log

有什么想法吗?忠告?

0 个答案:

没有答案