2016-10-03 29 views
-1

我有一個場景,我想要使用標準log4j.properties文件作爲屬性的基礎來初始化多個log4j記錄器以寫入其自己的文件。然後我想修改我的代碼中的屬性來設置記錄器。在代碼中,我已經設置我的記錄器像這樣:加載log4j屬性文件並進行編程式更改

PropertyConfigurator.configure(log4jpropertiespath); 

但我需要能夠設置文件附加器和類似下面的一些性質。特別需要設置Additivity以確保記錄器實例保留自己的日誌信息,而不管創建了多少包和記錄器被初始化。

SimpleLayout layout = new SimpleLayout(); 
FileAppender appender = new FileAppender(layout, logFileName, true);  
this.logger.setAdditivity(false); 
this.logger.addAppender(appender); 

任何指導表示讚賞。

回答

0

我仍然不認爲這是一個偉大的想法(有日誌文件,等等任意數字),但你可以通過包裝Logger.getLogger方法,這樣

public static Logger getPackageLogger(String packageName) { 
    Logger logger = Logger.getLogger(packageName); 
    if (logger.getAppender("myPackageAppender") == null) { 
     String logFileName = packageName + ".log"; // or something 
     SimpleLayout layout = new SimpleLayout(); 
     FileAppender appender = new FileAppender(
      layout, logFileName, true);  
     appender.setName("myPackageAppender"); 
     logger.setAdditivity(false); 
     logger.addAppender(appender); 
    } 
    return logger; 
} 
東西做到這一點

這可以被多次調用,並且應該只配置每個不同的(包)記錄器對象一次。

+0

我最終改變了實現使用更簡單的日誌系統。感謝您的建議。 – user3190153