Java 如何将log4j消息路由到唯一的appender
在Java 如何将log4j消息路由到唯一的appender,java,logging,log4j,Java,Logging,Log4j,在log4jmost(如果不是全部的话)appender扩展了AppenderSkeleton,它提供了一种setThreshold(Priority)方法,用于设置消息必须设置的最小“级别”,以便appender将其记录到某个地方 我想根据消息的确切级别/优先级将消息记录到不同的附加器 例如,我希望调试消息登录到ConsoleAppender,而不是其他地方。我希望信息消息登录到文件附加器,而不是其他地方。我希望错误消息登录到JMSAppender而不是其他地方 问题在于此setThresho
log4j
most(如果不是全部的话)appender扩展了AppenderSkeleton
,它提供了一种setThreshold(Priority)
方法,用于设置消息必须设置的最小“级别”,以便appender将其记录到某个地方
我想根据消息的确切级别/优先级将消息记录到不同的附加器
例如,我希望调试消息登录到ConsoleAppender
,而不是其他地方。我希望信息消息登录到文件附加器
,而不是其他地方。我希望错误消息登录到JMSAppender
而不是其他地方
问题在于此setThreshold(Priority)
方法设置了记录消息所需的“最小阈值”
当然,我可以将consoleApender
的阈值设置为DEBUG,但是由于信息和错误消息比DEBUG消息“更高”,因此我也会将信息和错误消息发送到consoleApender
是否有方法或方法可以准确地配置appender“级别”/优先级,或者这是我唯一的选择
使用LevelMatchFilter编辑:
这是朝着正确方向迈出的一步吗
LevelMatchFilter filter = new LevelMatchFilter();
filter.setLevelToMatch(Level.DEBUG.toString());
consoleAppender.addFilter(filter);
上面的代码片段能否完成确保consoleApender
日志调试和仅调试的任务?您可以将附加到任何附件,以仅按确切级别筛选日志消息
从javadoc:
这是一个基于级别匹配的非常简单的过滤器
过滤器允许两个选项
LevelToMatch
和AcceptOnMatch
。如果LevelToMatch
选项的值与LoggingEvent
的级别完全匹配,则decise(org.apache.log4j.spi.LoggingEvent)
方法在AcceptOnMatch
选项值设置为true的情况下返回Filter.ACCEPT
,如果为false,则返回Filter.DENY
。如果没有匹配项,则返回Filter.NEUTRAL 谢谢jalopaba-请查看我编辑(添加)的代码片段,如果我使用不正确,请告诉我。再次感谢!