配置logback.xml以根据包分割日志而不重叠信息

时间:2017-11-10 12:49:37

标签: java logback

我想将一个包 a 的所有内容记录到日志文件 a.loq 和其他所有内容中(没有任何 a 的日志)进入 standard.log 文件。到目前为止,我已经获得了 a.log 文件,但标准日志仍然保留了包 a 的所有内容。

<logger name="my.package.a" level="INFO" additivity="false">
    <appender-ref ref="FILE-A"/>
</logger>

<root level="INFO">
    <appender-ref ref="FILE-STD"/>
</root>

2 个答案:

答案 0 :(得分:0)

根据log4j的工作原理,它会将匹配过滤器的所有内容记录到文件中。 但根记录器仍将记录所有来源的所有相关“信息”....

因此无法从根记录器中删除此行为。你可以做的是:为过滤器添加更详细的内容并交换两者。 如下所示:

<logger name="my.package.a" level="INFO" additivity="false">
    <appender-ref ref="FILE-A"/>
</logger>

<root level="WARN">
    <appender-ref ref="FILE-STD"/>
</root>

答案 1 :(得分:0)

来自documentation

  

logger将其additivity标志设置为false,以便将其日志记录输出发送到名为FILE的appender,但不会发送到层次结构中附加更高的任何appender

所以,这完全是关于 logback.xml 中的appender和logger的排序。

Appenders应声明比此记录器。