【发布时间】:2012-01-31 15:56:41
【问题描述】:
在log4j 中,大多数(如果不是全部)附加程序扩展了AppenderSkeleton,它提供了一个setThreshold(Priority) 方法来设置消息必须设置的最小“级别”,以便附加程序在某处记录它。
我想根据消息的确切级别/优先级将消息记录到不同的附加程序。
例如,我希望 DEBUG 消息记录到 ConsoleAppender,但没有其他地方。我希望 INFO 消息记录到 FileAppender 而别处。我希望 ERROR 消息记录到 JMSAppender 而不是其他任何地方。
问题在于setThreshold(Priority) 方法,它设置了记录消息所需的“最小阈值”。
当然,我可以将ConsoleAppender 的阈值设置为 DEBUG,但由于 INFO 和 ERROR 消息比 DEBUG 消息“更高”,我也会收到发送到 ConsoleAppender 的 INFO 和 ERROR 消息。
是否有方法或方式准确地配置附加程序“级别”/优先级,或者这个最小阈值是我唯一的办法吗?
使用 LevelMatchFilter 编辑:
这是朝着正确方向迈出的一步吗?
LevelMatchFilter filter = new LevelMatchFilter();
filter.setLevelToMatch(Level.DEBUG.toString());
consoleAppender.addFilter(filter);
上面的代码 sn-p 能否完成确保ConsoleAppender 记录调试和仅调试的工作?
【问题讨论】: