2012-02-03 128 views
0

我在我的項目中有兩個appender,文件和控制檯。我想配置我的應用程序,以這樣進行:Log4j配置

全部用名字記錄器 「my.app。*」:

1. log events DEBUG and higher to fileA 
2. log events DEBUG and higher to fileB 

所有其他記錄器:

1. log events WARN and higher to fileA 
2. log events DEBUG and higher to fileB 

理想的情況下,配置看起來是這樣的:

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> 
<appender name="fileA" class="org.apache.log4j.FileAppender"> 
    <!-- configuration --> 
</appender> 

<appender name="fileB" class="org.apache.log4j.FileAppender"> 
    <!-- configuration --> 
</appender> 

<logger name="my.app" additivity="false"> 
    <level="DEBUG"/> 
    <appender-ref ref="fileA"/> 
</logger> 

<logger name="" additivity="true"> 
    <level="DEBUG"/> 
    <appender-ref ref="fileB"/> 
</logger> 

<root> 
    <level="WARN"/> 
    <appender-ref ref="fileA"/> 
</root> 
</log4j> 

但是,此設置會導致名爲「my.app」的記錄器僅記錄到控制檯,而其他所有r記錄器在WARN和更高版本上登錄到控制檯。本質上,<logger name="">被忽略。有沒有另一種方法來模擬log4j的這種行爲?

PS。我爲窮人格式道歉,真的在努力得到這個工作今晚:/

+1

你忘了在根元素中鍵入第二個appender? – 2012-02-03 07:55:55

+0

logger name =「」什麼都不做,rootlogger會做你認爲name =「」的事情。 – oers 2012-02-03 07:57:24

+0

@guido:如果我在根中插入一個ref到fileB,那麼所有其他的記錄器只會在WARN和以上的地方寫信給它,我希望他們在DEBUG上寫入它並且在 – Josh 2012-02-03 08:01:36

回答

2

您需要:

<logger name="my.app" additivity="false"> 
    <level="DEBUG"/> 
    <appender-ref ref="console"/> 
    <appender-ref ref="file"/> 
</logger> 

<root> 
    <appender-ref ref="console-warn"/> 
    <appender-ref ref="file-debug"/> 
</root> 

對於根的appender需要兩個新的控制檯/文件追加程序,有理想水平限制。

<appender name="file-debug" class="org.apache.log4j.FileAppender"> 
    <param name="Threshold" value="DEBUG"/> 
</appender> 

<appender name="console-warn" class="org.apache.log4j.ConsoleAppender"> 
    <param name="Threshold" value="WARN"/> 
</appender> 
+0

我很抱歉,但我在原文中有一個錯字。兩者實際上都是文件appender。是否有可能有兩個不同的文件appender寫入同一個文件? – Josh 2012-02-03 08:04:09

+0

@Josh我不這麼認爲:http://stackoverflow.com/questions/4046825/log4j-have-multiple-appenders-write-to-the-same-file-with-one-that-always-logs – oers 2012-02-03 08:06:45

+0

恩,謝謝。但是你是對的,你的解決方案將適用於我原來的控制檯和文件問題。 – Josh 2012-02-03 08:08:48