Logback DynamicThresholdFilter: невозможно увидеть журналы отладки в файле отладки - PullRequest
0 голосов
/ 09 октября 2019

Вот мой вариант использования.

В зависимости от определенного типа запросов, мне нужно отладить их. Они должны идти в отдельный файл. Я пытаюсь добиться этого, используя 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

Есть мысли? Совет?

...