2009-07-23 23 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

的感謝!我只是有一段時間! :) – 2009-07-23 15:06:26

相關問題