2011-01-28 28 views
3

我們維護一個應用程序範圍的系統變量[debug = true | false],當系統變量debug爲false時,我想在啓動時禁用log4j中的所有CONSOLE appender。根據系統變量,我可以打開/關閉CONSOLE日誌嗎?

只是appenders的程序掃描的最佳方式?還是有更優雅的方法,我可能不知道?

如果這是正確的方法,任何掃描appender的入門書也將受到歡迎。

回答

2

我會爲控制檯appender寫一個特殊的過濾器。沿

<appender name="stdout" class="org.apache.log4j.ConsoleAppender"> 
    <layout class="org.apache.log4j.TTCCLayout"> 
     <param name="ConversionPattern" value="%d...m%n"/> 
    </layout> 
    <filter class="OnDebugOnly"/> 
</appender> 

行定義爲篩選如下

import org.apache.log4j.spi.Filter; 
import org.apache.log4j.spi.LoggingEvent; 

public class OnDebugOnly extends Filter { 

    static boolean debug; 

    @Override 
    public int decide(LoggingEvent event) { 
     return (debug ? Filter.NEUTRAL : Filter.DENY) ; 
    } 
} 

當然,這需要調整。就像調試的定義和訪問方式一樣。
中性是爲了防止有人添加另一個過濾器...
再加上佈局是我的,在這裏使用您的首選佈局。
警告。我沒有測試它;-)

0

您是否研究過爲log4j設置.properties文件?您可以配置log4j將日誌消息發送到文件,關閉發送日誌消息到控制檯以獲取信息,發出警告等。如果需要,您甚至可以根據每個類別進行配置。如果你去這個網站並導航到配置部分,它應該告訴你你需要知道什麼。

http://logging.apache.org/log4j/1.2/manual.html

希望這回答了你的問題。

相關問題