我制作了一些系统,现在我想在它运行时跟踪一些关于它的统计信息。我决定使用 TSV 表格来写下这些统计数据。在寻找现有的最佳库时(如果可以的话,我想避免自己实现它),我发现FileHandler库几乎正是我想要的。
由于统计信息将每秒收集一次,我想我需要某种文件处理程序提供的大小限制的日志文件轮换,但我仍然想念的,对我来说重要的是能够在所有日志文件中拥有恒定的标题.
所以我想在所有日志文件中自定义第一行旋转(包含 TSV 格式的列的含义),其余行将是真实的统计数字。
有谁知道如何做到这一点?我无法找到适合我的 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.