2015-12-22 142 views
0

我使用下面的代碼來配置我的日誌記錄。Util日誌記錄不會刪除舊日誌文件輪流

public Boolean configureLogPath(String logPath, String level, String logComponents, int logFileSize, 
     int logFileCount) { 
    int logFileSizeInKbs = logFileSize * 1000; 
    Boolean result = false; 
    String[] splitComponents = logComponents.split(","); 
    for (String component : splitComponents) { 
     loggableComponents.add(component); 
    } 
    switch (level) { 
    case "info": 
     LOGGER.setLevel(Level.INFO); 
     break; 
    case "severe": 
     LOGGER.setLevel(Level.SEVERE); 
     break; 
    case "debug": 
     LOGGER.setLevel(Level.CONFIG); 
     break; 
    case "off": 
     LOGGER.setLevel(Level.OFF); 
     break; 
    default: 
     LOGGER.setLevel(Level.SEVERE); 
    } 
    try { 
     simpleFormatter = new SimpleFormatter(); 
     logFileHandler = new FileHandler(logPath, logFileSizeInKbs, logFileCount); 
     logFileHandler.setFormatter(simpleFormatter); 
     LOGGER.setFilter(filter); 

     LOGGER.addHandler(logFileHandler); 
     result = true; 
    } catch (SecurityException e1) { 
     result = false; 
     LOGGER.log(Level.SEVERE, "Security exception when reading log file" + e1); 
    } catch (IOException e1) { 
     result = false; 
     LOGGER.log(Level.SEVERE, "IO Exception when reading log file" + e1); 
    } 
    return result; 
} 

然而,儘管我已經給出了相關參數中的FileHandler爲要旋轉的日誌,舊日誌文件仍然存在。這是實用程序日誌記錄的行爲還是有什麼我可以做的,以在旋轉期間刪除舊文件?

回答

0

這是實用程序日誌記錄的行爲,還是有什麼我可以做的在旋轉過程中刪除舊文件?

每對的FileHandler documentation

對於旋轉組文件,每個文件達到給定大小 限制,它是封閉的,轉出,並打開新的文件。

如果你想刪除旋轉的文件,那麼就不要旋轉。輪換的目標是讓您可以讀取舊的日誌數據。

如果您確實想要旋轉並刪除舊文件,您可以覆蓋FileHandler.setOutputStream方法來偵聽輪播並編寫自己的刪除方法。

private boolean constructed; 
@Override 
protected synchronized void setOutputStream(OutputStream out) throws SecurityException { 
    super.setOutputStream(out); 
    if (constructed && Level.OFF.equals(super.getLevel())) { //Rotating... 
     deleteRotatedFiles(); 
    } 
    constructed = true; 
} 
+0

如果我手動關閉日誌時條件刪除文件不會這麼做嗎?這就是說,如果我的日誌還沒有達到輪換數量,並且如果我想停止日誌記錄,我會將當前日誌的日誌級別設置爲「關閉」。那麼這不會刪除當前正在使用的日誌嗎? – mayooran

+0

對於新構建的FileHandler來說。這並不難,因爲您可以將級別設置爲2147483646而不是OFF。或者可以修改FileHandler以跟蹤它不是第一次調用。 – jmehrens

相關問題