繁体   English   中英

如何将log4j消息路由到唯一的附加程序

[英]How to route log4j messages to unique appenders

log4j大多数(如果不是全部)附加程序都扩展了AppenderSkeleton ,它提供了setThreshold(Priority)方法,用于设置消息必须设置的最小“级别”,以便附加程序将其记录到某处。

我想根据消息的确切级别/优先级将消息记录到其他追加程序。

例如,我希望DEBUG消息记录到ConsoleAppender ,但除此之外没有其他地方。 我希望INFO消息登录到FileAppender并且无其他地方。 我希望将错误消息记录到JMSAppender并且在其他地方。

问题在于此setThreshold(Priority)方法,该方法设置了记录消息所需的“最小阈值”。

当然,我可以将ConsoleAppender的阈值设置为DEBUG,但是由于INFO和ERROR消息比DEBUG消息“更高”,所以我还将获得发送到ConsoleAppender的INFO和ERROR消息。

是否有确切配置附加器“级别” /优先级的方法或方法,或者这是我的唯一选择?

使用LevelMatchFilter编辑
这是朝正确方向迈出的一步吗?

LevelMatchFilter filter = new LevelMatchFilter();
filter.setLevelToMatch(Level.DEBUG.toString());

consoleAppender.addFilter(filter);

上面的代码片段是否可以完成确保ConsoleAppender记录DEBUG( DEBUG)的工作?

您可以将LevelMatchFilter附加到任何附加程序,以仅按确切级别过滤日志消息。

从javadoc:

这是一个基于级别匹配的非常简单的过滤器。

过滤器接受两个选项LevelToMatchAcceptOnMatch 如果存在的值之间的完全匹配LevelToMatch选项和水平LoggingEvent ,则decide(org.apache.log4j.spi.LoggingEvent)方法返回Filter.ACCEPT中情况下AcceptOnMatch选项值设置为true,如果为false,则返回Filter.DENY 如果不匹配,则返回Filter.NEUTRAL

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM