2016-09-23 668 views
2

我知道在log4j的,你可以通过做一些像使用多个附加目的地:如何在Log4j2中添加多个appender引用?

log4j.logger.com.x=DEBUG, append1, append2 

,但会等价是log4j2什么?

难道是这样的:

logger.com.x.level = DEBUG 
logger.com.x.appenderRefs = append1, append2 

回答

4

在您的示例中没有提供appenders 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> 
    <Logger name="com.x" level="debug" additivity="false"> 
     <appenderRef ref="append1" /> 
     <appenderRef ref="append2" /> 
    </Logger> 
    ... 
</Loggers> 
+0

我同意Log4j 2的XML配置比Log4j 1.2更简单,记录更好。大多数doc示例使用XML,因此在使用XML配置格式时,解决问题(找到类似的配置,获得支持)会更容易。 –

+0

好的,谢谢你,所以在你的中间区块,你将两个appender添加到同一个记录器,对吧? –

+0

是的。您可以以这种方式为同一个记录器添加多个appender。您可以为特定的appenderRef提供不同的日志级别。 – asch

0

我知道这是一个很老的问题,但我找到了解决方案通过使用以下语法(使用你的例子):

logger.com.x.appenderRef.app1.ref = append1 
logger.com.x.appenderRef.app2.ref = append2 

这样一切正常。