动态或基于调用者重新配置logback ThresholdFilter级别?

时间:2015-10-07 11:24:45

标签: java logging logback

我使用logback将TRACE记录到文件中,并使用DEBUG appender中的ThresholdFilterSTDOUT记录到控制台,类似于以下配置。< / p>

实用程序类FooUtils执行大量跟踪,通常我只想在文件中,而不是控制台,但BarGenerator main使用此类时方法I希望通过降低阈值或其他方式来查看控制台中FooUtils的输出。有可能吗?

<configuration>
    <appender name="FILE" class="ch.qos.logback.core.FileAppender">
        <file>foo.log</file>
        <encoder>
            <pattern>%msg%n</pattern>
        </encoder>
    </appender>

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>DEBUG</level>
        </filter>
        <encoder>
            <pattern>%msg%n</pattern>
        </encoder>
    </appender>

    <root level="TRACE">
        <appender-ref ref="FILE"/>
        <appender-ref ref="STDOUT"/>
    </root>
</configuration>

1 个答案:

答案 0 :(得分:0)

您可以在BarGenerator的主要方法中指定mapped diagnostic context属性。只要您保持在同一个线程中,所有记录的消息都将使用此属性进行标记,您可以根据appender中的此属性对其进行过滤。