使用 log4j 写入多个日志文件时,我遇到了重复日志消息的问题。
目前,我正在尝试在我的文件中INFO
记录名为foobarfoo.log
的特定记录器的级别数据(及以上) ,然后为文件中的所有记录器记录WARN
所有级别的日志消息(及以上)。bar.log
结果,重复的日志消息被写入foo.log
文件(每行记录两次),经过一些快速研究,我发现解决这个问题的建议是添加log4j.additivity.foobar=false
到我的属性文件中。
这样做的问题是,尽管它停止了重复的行,但WARN
来自foobar记录器的消息永远不会写入bar.log
文件。
我的 log4j 属性文件如下:
log4j.rootLogger = WARN, FOO, BAR
log4j.logger.foobar = INFO, FOO
log4j.additivity.foobar = false
log4j.appender.FOO = org.apache.log4j.RollingFileAppender
log4j.appender.FOO.layout = org.apache.log4j.PatternLayout
log4j.appender.FOO.layout.ConversionPattern = %d{ISO8601} %-5p %c ~ %m%n
log4j.appender.FOO.File = foo.log
log4j.appender.BAR = org.apache.log4j.RollingFileAppender
log4j.appender.BAR.layout = org.apache.log4j.PatternLayout
log4j.appender.BAR.layout.ConversionPattern = %d{ISO8601} %-5p %c ~ %m%n
log4j.appender.BAR.File = bar.log
有谁知道我如何将日志消息写入两个日志文件(就像我开始设置additivity
属性之前所做的那样)并且仍然防止重复的日志消息?
请注意,这是对问题的简化摘要。在现实世界的场景中,有多个记录器和两个以上的日志文件