【发布时间】:2016-09-23 00:51:10
【问题描述】:
我知道在 log4j 中您可以通过执行以下操作来使用多个附加程序:
log4j.logger.com.x=DEBUG, append1, append2
但是 log4j2 中的等价物是什么?
会是这样吗:
logger.com.x.level = DEBUG
logger.com.x.appenderRefs = append1, append2
?
【问题讨论】:
我知道在 log4j 中您可以通过执行以下操作来使用多个附加程序:
log4j.logger.com.x=DEBUG, append1, append2
但是 log4j2 中的等价物是什么?
会是这样吗:
logger.com.x.level = DEBUG
logger.com.x.appenderRefs = append1, append2
?
【问题讨论】:
您没有在示例中提供附加程序 append1 和 append2 的类型,但这很重要,当您使用属性文件时。假设附加程序定义如下:
appender.console.type = Console
appender.console.name = append1
...
appender.rolling.type = RollingFile
appender.rolling.name = append2
...
记录器应该是这样的:
logger.console.name = com.x
logger.console.level = debug
logger.console.additivity = false
logger.console.appenderRef.console.ref = append1
logger.rolling.name = com.x
logger.rolling.level = debug
logger.rolling.additivity = false
logger.rolling.appenderRef.rolling.ref = append2
我建议根据manual中的属性文件配置示例进行此配置。我没有这样做,而是更喜欢 xml 格式。我建议您考虑迁移到 xml 格式。 log4j2 文档中的大多数示例都是针对 xml 配置格式的。 在 xml 的情况下,loggers 配置非常紧凑,就像这样:
<Loggers>
<Logger name="com.x" level="debug" additivity="false">
<appenderRef ref="append1" />
<appenderRef ref="append2" />
</Logger>
...
</Loggers>
【讨论】:
我知道这是一个很老的问题,但我通过使用以下语法(使用您的示例)找到了解决方案:
logger.com.x.appenderRef.app1.ref = append1
logger.com.x.appenderRef.app2.ref = append2
通过这种方式,一切正常。
【讨论】: