2016-09-23 90 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 

這樣一切正常。

相關問題