我在java.util.logging包中使用Java Logger。这就是我目前创建记录器的方式:
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)
现在,当我的记录器记录时,它会创建一个扩展名为.0,.1,.2(等)的文件。我更愿意说.0.log,.1.log(等)。我无法找到我可以设置的地方。任何想法/帮助都会很棒。
答案 0 :(得分:3)
构建fileHandler
对象时,请修改filePath
以使用模式。创建一个使用%g
组件的模式。该组件将在运行时使用世代号替换,以区分旋转日志。
示例
要将日志文件放在表单%TEMP%/mylog.1.log
的系统临时目录中,请使用以下模式:
`"%t/mylog.%g.log"`
答案 1 :(得分:3)
FileHandler的第一个参数是顶级类文档中描述的文件模式。如果只传递没有模式的文件名,则FileHandler将不得不求助于将生成附加到文件名,以便它可以在文件之间轮换。如果由于多个JVM实例同时运行而导致代数发生冲突,则FileHandler可以在文件名中附加唯一编号。
生成类似以下内容的文件模式:
FileHandler fileHandler = new FileHandler("%hjvm%g.log", 5242880, 5, true);
这将在您的主文件夹中生成名为jvm0.log,jvm1.log,jvm2.log等的文件。