按级别过滤传递给父记录器的日志消息(logback)

时间:2014-08-28 07:08:58

标签: logging logback

在我看来,我想要达到的目标非常普遍,但我不能让它发挥作用:

我有一个用于根记录器的appender,只记录任何冒泡到根目录的东西。我还有另一个附加到更具体的记录器的附加器。特定记录器具有级别INFO,但我只想将ERROR消息冒泡到根目录。实现这一目标的最佳方法是什么?

根记录器可能会记录从其他特定记录器传递的INFO消息,但对于此特定记录器,我不希望任何INFO消息在层次结构中向上传递。

1 个答案:

答案 0 :(得分:1)

logback: Two appenders, multiple loggers, different levels< - 这里的第一个答案应该是您需要的。它描述了一个自定义ThresholdLoggerFilter,可以在根的appender上使用它来根据消息的来源(Logger)和级别阈值来过滤消息。然后你只需过滤除了ERROR以外的任何东西,你不想看到其他任何东西:

<appender name="RootAppender" class="ch.qos.logback.core.ConsoleAppender">
    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
        <level>INFO</level>
    </filter>
    <filter class="com.myapp.ThresholdLoggerFilter">
        <logger>TheLoggerFromWhichYouWantOnlyErrorOnTheRoot</logger>
        <level>ERROR</level>
    </filter>
</appender>

事实证明,它实际上不是常见或简单的用例,但它是可能的。