我想将一个包 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>
答案 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)
logger将其additivity标志设置为false,以便将其日志记录输出发送到名为FILE的appender,但不会发送到层次结构中附加更高的任何appender
所以,这完全是关于 logback.xml 中的appender和logger的排序。
Appenders应声明高比此记录器。