2010-04-01 36 views
3

我看到我們的一個工具在它的log4j配置中使用了一個ConsoleAppender到System.out旁邊的System.err。配置的片段:配置Log4j:ConsoleAppender爲System.err?

<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender"> 
     <!-- Log to STDOUT. --> 
     <param name="Target" value="System.out"/> 

....

<appender name="CONSOLE_ERR" class="org.apache.log4j.ConsoleAppender"> 
      <!-- Log to STDERR. --> 
    <param name="Target" value="System.err"/> 

在Eclipse這導致雙重信息到控制檯,所以我認爲是沒有用的,對不對? 在Linux服務器上,我只能看到一條消息到PuTTY控制檯,那麼System.err消息會去哪裏?

回答

2

根據標準和錯誤輸出如何重定向,它可以使用。標準輸出通常是靜音的(例如重定向到/ dev/null),所以錯誤輸出是實際顯示錯誤消息的唯一方法。

我懷疑PuTTY實際上是這麼做的 - 將stderr靜音但不是標準輸出會非常不尋常。我猜你的CONSOLE_ERR被設置爲ERROR或WARN級別。在這種情況下,您可以使用PuTTY檢查是否只顯示錯誤消息或全部顯示錯誤消息,以確定您實際看到的是哪個appender的輸出。

+0

ahum,我忽略了WARN級別,PuTTY確實顯示stderr – Gerard 2010-04-01 11:51:43