我在使用log4j写入多个日志文件时遇到重复的日志消息。Log4j:多个记录器,级别和appenders
目前我想在我的foo.log
文件记录INFO
级数据(及以上)的命名foobar的的具体记录,然后在bar.log
文件中的所有记录仪所有WARN
级别的日志消息(及以上) 。
因此,将重复的日志消息写入foo.log
文件(每行记录了两次),经过一些快速调查后发现解决此问题的建议是将log4j.additivity.foobar=false
添加到我的属性文件中。
这样做的问题是,虽然它停止重复的线路,从foobar的记录器WARN
消息永远不会写入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
财产做),并且仍然防止重复的日志消息?
请注意,这是对问题的简要总结。在现实世界中,有多个记录器和两个以上的日志文件
这是所有好的和不好,但这不是什么问。这是如何通过记录器区分的?原始问题说只有'foobar'去foo,并且包括foobar在内的所有记录器都去吧 –
这个问题要求一个解决方案,其中'foobar'记录器的所有'INFO'消息都转到'foo.log'文件和所有'所有记录器的WARN'消息都转到'bar.log'文件(并且每个日志消息只在适当的文件中写入一次)。 –
不,__all loggers__,不只是'foobar'发送到'bar.log'。按照这样的问题: “目前我正在试图登录一个'foobar'我foo.log文件,然后在酒吧__all loggers__所有'WARN'级别的日志信息的特定记录'INFO'级别的数据。日志文件“。 –