我們維護一個應用程序範圍的系統變量[debug = true | false],當系統變量debug爲false時,我想在啓動時禁用log4j中的所有CONSOLE appender。根據系統變量,我可以打開/關閉CONSOLE日誌嗎?
只是appenders的程序掃描的最佳方式?還是有更優雅的方法,我可能不知道?
如果這是正確的方法,任何掃描appender的入門書也將受到歡迎。
我們維護一個應用程序範圍的系統變量[debug = true | false],當系統變量debug爲false時,我想在啓動時禁用log4j中的所有CONSOLE appender。根據系統變量,我可以打開/關閉CONSOLE日誌嗎?
只是appenders的程序掃描的最佳方式?還是有更優雅的方法,我可能不知道?
如果這是正確的方法,任何掃描appender的入門書也將受到歡迎。
我會爲控制檯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) ;
}
}
當然,這需要調整。就像調試的定義和訪問方式一樣。
中性是爲了防止有人添加另一個過濾器...
再加上佈局是我的,在這裏使用您的首選佈局。
警告。我沒有測試它;-)
您是否研究過爲log4j設置.properties文件?您可以配置log4j將日誌消息發送到文件,關閉發送日誌消息到控制檯以獲取信息,發出警告等。如果需要,您甚至可以根據每個類別進行配置。如果你去這個網站並導航到配置部分,它應該告訴你你需要知道什麼。
http://logging.apache.org/log4j/1.2/manual.html
希望這回答了你的問題。