我制作了一些系统,现在我想跟踪它运行时的一些统计信息。我决定使用TSV表来记下这些统计数据。在寻找最好的现有lib时(如果可以,我想避免自己实现它)我发现FileHandler lib几乎就是我想要的。
由于统计数据将每秒收集一次,我想我需要某种日志文件轮换大小限制,文件处理程序提供,但我仍然想念的是什么,对我来说重要的是具有恒定头的能力所有日志文件。
所以我希望在所有日志文件中自定义第一行(包含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.