Logback级别和Logback中的阈值过滤级别之间的区别是什么?

时间:2016-12-30 10:25:49

标签: logging logback

我有一个带有ThreshholdFilter级别信息的追加者:

<appender name="my_apender" class="com.my.apender.MyAppender">
    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
        <level>INFO</level>
    </filter>
</appender>

和一个级别为INFO的记录器:

<logger name="whatever" level="INFO">
    <appender-ref ref="my_appender"/>
</logger>

两个级别之间有什么区别?

2 个答案:

答案 0 :(得分:4)

为记录器分配的级别是记录器使用的级别,而过滤器ch.qos.logback.classic.filter.ThresholdFilter内分配的级别是此appender将记录内容的级别,更多details。< / p>

这是一个澄清事情的例子:

<!-- deny all events with a level below INFO, that is TRACE and DEBUG -->
<appender name="my_apender1" class="com.my.apender.MyAppender">
    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
        <level>INFO</level>
    </filter>
</appender>

<!-- deny all events with a level below DEBUG, that is TRACE-->
<appender name="my_apender2" class="com.my.apender.MyAppender">
    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
        <level>DEBUG</level>
    </filter>
</appender>

<!-- event with level DEBUG will be handled only by my_apender2, and events with higher levels than DEBUG will be handled by both appenders -->
<logger name="whatever" level="DEBUG">
    <appender-ref ref="my_appender1"/>
    <appender-ref ref="my_appender2"/>
</logger>

答案 1 :(得分:1)

为清楚区分,让我们举个例子... ...假设您的记录器与两个附加程序关联,一个附加程序记录到myapp_all.log文件,另一个附加程序记录到myapp_error.log。现在,如果只想将ERROR级别的日志记录到myapp_error.log,则可以使用追加过滤器,而不是记录器过滤器。由于单个类通常与单个记录器相关联,因此您不能使用记录器级别来分叉ERROR级别流。