2014-02-11 28 views
3

我在java.util.logging包中使用了Java Logger。這就是我創建當前記錄:Java記錄器:以循環數+ .log爲後綴創建文件

FileHandler fileHandler = new FileHandler(filePath, 5242880, 5, true); 
fileHandler.setFormatter(new java.util.logging.Formatter() { 
    @Override 
    public String format(LogRecord logRecord) { 
    if(logRecord.getLevel() == Level.INFO) { 
     return "[INFO " + createDateTimeLog() + "] " + logRecord.getMessage() + "\r\n"; 
    } else if(logRecord.getLevel() == Level.WARNING) { 
     return "[WARN " + createDateTimeLog() + "] " + logRecord.getMessage() + "\r\n"; 
    } else if(logRecord.getLevel() == Level.SEVERE) { 
     return "[ERROR " + createDateTimeLog() + "] " + logRecord.getMessage() + "\r\n"; 
    } else { 
     return "[OTHER " + createDateTimeLog() + "] " + logRecord.getMessage() + "\r\n"; 
    } 
    } 
    }); 
logger.addHandler(fileHandler) 

現在,當我記錄日誌,它創建了進一步擴展2.0,0.1 .2(ETC)的文件。我更喜歡它說.0.log,.1.log(等)。我無法找到我可以設置的位置。任何想法/幫助將會很棒。

回答

3

當您構建您的fileHandler對象時,請修改filePath以使用圖案。創建一個使用%g組件的模式。該組件將在運行時被替換爲世代號以區分輪轉的日誌。


要放置日誌文件系統中的temp目錄與形式%TEMP%/mylog.1.log,使用下列模式:

`"%t/mylog.%g.log"` 
+0

好的。所以我認爲我有這個工作。它在OSX和Unix上運行良好。但是在Windows上,我創建的第一個日誌文件仍然不以.log結尾。當我的第二,第三等日誌文件被製作時,它們是正確的..但是第一個不是。任何想法爲什麼? –

3

的第一個參數的FileHandler處於頂層類中描述的文件模式文檔。如果僅傳遞一個沒有模式的文件名,FileHandler將不得不求助於將文件名附加到文件名,以便它可以在文件之間旋轉。如果由於同時運行多個JVM實例而導致世代衝突,則FileHandler可以向文件名附加唯一編號。

生成一個文件模式類似以下內容:

FileHandler fileHandler = new FileHandler("%hjvm%g.log", 5242880, 5, true); 

這將在您的個人文件夾文件命名jvm0.log,jvm1.log,jvm2.log,等等。