2011-01-28 3 views
3

私たちはアプリケーション全体のシステム変数[debug = true | false]を維持しています。システム変数debugがfalseの場合、起動時にlog4j内のすべてのCONSOLEアペンダを無効にします。システム変数に応じてCONSOLEのログオンをオン/オフすることはできますか?

アペンダーのプログラムスキャンだけに最適な方法ですか?それとも、私がおそらく知らないより洗練されたアプローチがありますか?

アペンダーをスキャンする際の任意のプライマーは、正しいアプローチであれば歓迎します。

答えて

2

コンソールアペンダー用の特別なフィルターを作成します。以下のように定義フィルター付き

<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

うまくいけば、これはあなたの質問に答えます。

関連する問題