2009-07-23 6 views
12

スレッドクラスの複数のインスタンスが、いつでも実行されています。私は必要なロギングに使用するlog4jセットアップを持っています。各スレッドが独自のログファイルに出力するようにlog4jプロパティを設定するにはどうすればよいですか?

私のスレッドクラスのすべてのインスタンスが別のログファイルにログを出力するように、log4jを設定する方法が必要です。ここで

は、上記のは、私はインスタンスごとのスレッドのためのファイルを作成しますが、それはそれらのファイルに出力されていない何もしない

public class doSomething extends Thread { 

    private Logger d_logger; 

    public doSomething(int id){ 
     d_logger = Logger.getLogger("doSomething"+id); 
     String logFileName = "doSomething"+id+".log"; 

     Properties prop = new Properties; 
     prop.setProperty("doSomething"+id,"DEBUG, WORKLOG"); 
     prop.setProperty("log4j.appender.WORKLOG","org.apache.log4j.FileAppender"); 
     prop.setProperty("log4j.appender.WORKLOG.File", logFileName); 
     prop.setProperty("log4j.appender.WORKLOG.layout","org.apache.log4j.PatternLayout"); 
     prop.setProperty("log4j.appender.WORKLOG.layout.ConversionPattern","%d %c{1} - %m%n"); 
     prop.setProperty("log4j.appender.WORKLOG.Threshold","INFO"); 

     PropertyConfigurator.configure(prop); 
    } 

    public void run(){ 
     d_logger.info("Starting to doSomething number" + id); 
    } 

} 

私は(擬似コードで)やっていることです。どんな助けでも大歓迎です。

答えて

13

ロガーを設定するための正しい構文があるので、ファイルには何も出力していない:

prop.setProperty("log4j.logger.doSomething"+id,"DEBUG, WORKLOG"); 
+0

感謝!私はちょうど瞬間があった! :) –

+0

log4j2では機能しません。PropertyConfiguratorクラスはサポートされなくなりました。 – Sanmoy

関連する問題