如何在记录器 xml 标记内的 appender refs 中禁用 log4j2.xml 可加性

Posted

技术标签:

【中文标题】如何在记录器 xml 标记内的 appender refs 中禁用 log4j2.xml 可加性【英文标题】:How do I disable log4j2.xml additivity in appender refs within a logger xml tag 【发布时间】:2019-04-01 04:41:12 【问题描述】:

在发布这个问题之前我已经完成了我的研究,我的问题与我没有正确使用 additivity 属性有关,下面是我的 log4j2.xml 中的一个 sn-p,我想要实现的是每个 appender记录器中定义的 ref 应该只附加它定义的级别的日志,但所有附加器都会获取附加的所有日志消息,而不管日志级别如何,因此例如调试记录器仍然会收到我不想要的错误消息。任何投入将不胜感激。

<Logger name="com.mycompnay" level="INFO" additivity="false">

    <AppenderRef ref="CoreInfo" level="INFO"/>
    <AppenderRef ref="CoreDebug" level="DEBUG"/>
    <AppenderRef ref="CoreWarning" level="WARNING"/>
    <AppenderRef ref="CoreError" level="ERROR"/>

</Logger>

【问题讨论】:

【参考方案1】:

我找到了解决方案,而不是在 appender ref 上设置日志级别,在 appender 声明中你可以做这样的事情来确保它只记录你可以更改为你想要的任何日志级别的调试消息。花了一段时间才找到这个!

<LevelRangeFilter minLevel="DEBUG" maxLevel="DEBUG" onMatch="ACCEPT" onMismatch="DENY"/>

【讨论】:

另一种可能的解决方案是按照我在this answer 后半部分建议的方式使用RoutingAppender

以上是关于如何在记录器 xml 标记内的 appender refs 中禁用 log4j2.xml 可加性的主要内容,如果未能解决你的问题,请参考以下文章

jQuery - 在使用 append() 附加子节点时 - 附加的 xml 标记在 Internet Explorer 11 中转换为小写

如何从一个工作表内的多个提取数据记录到另一个工作表中,并在数据后面加一个分隔标记。

从 XML 标记内的多行中删除空格

过滤掉 n 天内的记录

如何在经纬度半径范围内的 xml 文件中查找位置

如何在不使用 jquery append 的情况下插入元标记?