我製作了一些系統,現在我想跟蹤它在運行時的一些統計信息。我決定使用TSV格式來記錄這些統計數據。在尋找最好的現有lib(如果可以的話,我想避免自己實現),我發現FileHandler lib幾乎就是我想要的。由於統計信息會每秒收集一次,所以我想我需要某種文件處理程序提供的大小限制的日誌文件輪換,但我仍然錯過了什麼,對我來說重要的是具有常量標題的能力在所有日誌文件中。帶恆定標題的Java旋轉日誌
所以,我想在所有日誌文件中旋轉自定義第一行(包含TSV格式的列的含義),其餘的行將是真正的統計數字。
有沒有人有任何想法如何做到這一點?我無法找到適合我或其他類似問題的lib。另外,如果你知道一些其他的lib可以實現這一點,我願意拋棄FileHandler來支持這一點。
在此先感謝!
編輯: 因此,根據@jmehrens提供的答案我做了下面的代碼,它的作品就像魅力! 這裏是一個自定義格式化類:
class CustomFormatter extends Formatter {
@Override
public String format(LogRecord record) {
return record.getMessage() + "\n";
}
@Override
public String getHead(Handler h) {
return "header\n";
}
}
這裏的工人代碼:
String path = "/tmp/temp2";
FileHandler fileHandler = new FileHandler(path, 300, 5);
fileHandler.setFormatter(new CustomFormatter());
Logger logger = Logger.getLogger("sam.logging");
logger.addHandler(fileHandler);
for(int i = 0; i < 10000; i++)
logger.log(new LogRecord(Level.INFO, i+" aaaaaaaaaaaaaa."));
這裏是示例輸出:
[/tmp] -> cat temp2.3
header
9957 aaaaaaaaaaaaaa.
9958 aaaaaaaaaaaaaa.
9959 aaaaaaaaaaaaaa.
9960 aaaaaaaaaaaaaa.
[/tmp] -> cat temp2.1
header
9985 aaaaaaaaaaaaaa.
9986 aaaaaaaaaaaaaa.
9987 aaaaaaaaaaaaaa.
9988 aaaaaaaaaaaaaa.
9989 aaaaaaaaaaaaaa.
也許個人喜好,但我不會找一個圖書館做這樣的事情。從您對需求的解釋中,似乎這種類型的應用程序很容易在合理的時間內寫入。 –
也許你是對的,如果沒有優雅的答案發生我會這樣做。但是,如果可能的話,重複使用完成的代碼總是更好:) – crollywood