使用log4j写入多个日志文件时,我遇到重复日志消息的问题.
目前我正在试图登录INFO级数据(及以上)为指定特定的记录foobar的在我的foo.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
Run Code Online (Sandbox Code Playgroud)
有谁知道如何将日志消息写入两个日志文件(就像我在开始设置additivity属性之前一样)并且仍然阻止重复的日志消息?
请注意,这是问题的简要概述.在现实世界中,有多个记录器和两个以上的日志文件
我们如何编写一个简单的log4j2.xml文件,其中包含不同级别的日志进入不同的文件?
例如,我们有错误日志我需要将所有错误日志消息推送到一个日志文件中,并将所有信息日志消息推送到另一个文件中.
我希望InfoController.log文件中的信息消息和LoginController.log文件中的错误消息
我该怎么做?