在我看来,我想要达到的目标非常普遍,但我不能让它发挥作用:
我有一个用于根记录器的appender,只记录任何冒泡到根目录的东西。我还有另一个附加到更具体的记录器的附加器。特定记录器具有级别INFO,但我只想将ERROR消息冒泡到根目录。实现这一目标的最佳方法是什么?
根记录器可能会记录从其他特定记录器传递的INFO消息,但对于此特定记录器,我不希望任何INFO消息在层次结构中向上传递。
答案 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>
事实证明,它实际上不是常见或简单的用例,但它是可能的。