10

log4j.properties新しいアペンダーを作成せずに、で構成されたアペンダーの「ファイル」プロパティをオーバーライドすることは可能ですか? もしそうなら - どのように?

これが状況です。2 つの apender があり、A1 は ConsoleAppender で、A2 は FileAppender です。A2 の「ファイル」は、一般的な error.log を示しています。

log4j.appender.A2.File=error.csv

このアペンダーは、エラー レベルのイベントまたはそれ以上のイベントのみをログに記録します。

log4j.appender.A2.Threshold=error.

インスタンスが作成されているクラスがいくつかあるため、エラーの原因となったクラスに応じて、これらのエラーを異なるファイルに書き込む必要があります。エラーを作成したクラスをすばやく確認できると、error.log をざっと見てクラスタグを探すよりもはるかに役立つため、非常に役立ちます。

したがって、私の考えは、たとえばこれらの新しく作成されたクラスのコンストラクターで「ファイル」プロパティをオーバーライドして、別のファイルにエラーを記録することでした。

よろしくお願いします!

4

2 に答える 2

17

実行時に log4j プロパティを変更するには、このリンクにアクセスしてください

http://alperkaratepe.wordpress.com/2010/01/16/how-to-change-log4j-properties-at-runtime/

 private void updateLog4jConfiguration(String logFile) { 
    Properties props = new Properties(); 
    try { 
        InputStream configStream = getClass().getResourceAsStream( "/log4j.properties"); 
        props.load(configStream); 
        configStream.close(); 
    } catch (IOException e) { 
        System.out.println("Error: Cannot laod configuration file "); 
    } 
    props.setProperty("log4j.appender.FILE.file", logFile); 
    PropertyConfigurator.configure(props); 
 }
于 2013-01-09T17:16:31.827 に答える