Java Logger: создайте файл с номером поворота + .log в качестве суффикса
Я использую Java Logger в пакете java.util.logging. Вот как я сейчас создаю регистратор:
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 (и т. Д.). Я не могу найти, где я могу установить это. Любые идеи / помощь будут отличными.
2 ответа
Когда вы строите свой fileHandler
объект, изменить filePath
использовать шаблон. Создайте шаблон, который использует %g
составная часть. Этот компонент будет заменен во время выполнения на номер поколения, чтобы различать повернутые журналы.
пример
Поместить файл журнала в системный временный каталог с формой %TEMP%/mylog.1.log
используйте следующую схему:
`"%t/mylog.%g.log"`
Первым аргументом FileHandler является шаблон файла, описанный в документации класса верхнего уровня. Если вы передадите просто имя файла без шаблона, FileHandler придется прибегнуть к добавлению генерации к имени файла, чтобы он мог вращаться между файлами. Если поколения сталкиваются из-за одновременного запуска нескольких экземпляров JVM, FileHandler может добавить уникальный номер к имени файла.
Создайте шаблон файла примерно так:
FileHandler fileHandler = new FileHandler("%hjvm%g.log", 5242880, 5, true);
Это создаст файлы в вашей домашней папке с именами jvm0.log, jvm1.log, jvm2.log и так далее.