2011-04-15 48 views
0

* 強文本 *我已經調用getLogger(唯一標識符)爲每個線程創建單個記錄器並基於線程標識生成不同的文件並使用log4j的其他唯一標識符。log4J記錄每個線程的文件,但無法釋放記錄器,即使線程死亡

我generage多個日誌文件發送到我的應用程序的每個請求,現在即使請求的線程中進行的,即線程死亡,我無法刪除與該線程關聯的日誌文件。

,如果我嘗試使用logger.shutdown(),它關閉其他開放線程記錄器以及其停止在其他文件中的記錄。

請提出一個解決的辦法。

回答

0

Log4j的文件鎖的生命週期是不相關的線程的生命週期。

如果你能趕上線程死亡時間...

Logger log = Logger.gerLogger(yourCategoryName); 
Enumeration<?> enumeration = log.getAllAppenders(); 
while (enumeration.hasMoreElements()) { 
    ((Appender) enumeration.nextElement()).close(); 
} 

*注意*這是無法復原的「追加程序」。