[英]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:
这是一个基于级别匹配的非常简单的过滤器。
过滤器接受两个选项LevelToMatch
和AcceptOnMatch
。 如果存在的值之间的完全匹配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.