Как повернуть файлы журналов в зависимости от времени, а не размера в Log4j?
Я использую Log4j с RollingFileAppender
для создания поворота журнала по размеру.
Как я могу настроить его для регистрации в каждом файле за определенное время перед вращением?
Например, чтобы каждый файл журнала содержал один час журналов, вращающийся в верхней части каждого часа?
Я настраиваю Log4j программно в Java с помощью объекта Properties
(в отличие от файла log4j.properties
)
Ответы
Ответ 1
Вероятно, вы захотите использовать DailyRollingFileAppender. Например, чтобы катить их по часам, вы должны использовать DatePattern '.'yyyy-MM-dd-HH
. Для файла log4j.properties:
log4j.appender.myAppender=org.apache.log4j.DailyRollingFileAppender
log4j.appender.myAppender.DatePattern='.'yyyy-MM-dd-HH
...
Или для вашей программной конфигурации:
DailyRollingFileAppender appender = new DailyRollingFileAppender();
appender.setDatePattern("'.'yyyy-MM-dd-HH");
Logger root = Logger.getRootLogger();
root.addAppender(appender);
К сожалению, использование DailyRollingFileAppender означает, что вы не можете ограничить размер файла - это может быть проблематично, если у вас есть тонны журналов за данный период проката.
Ответ 2
Другое, что нужно делать с любым загружаемым файловым приложением, - это убедиться, что только один JVM получает доступ к определенному файлу журнала за раз. Это связано с тем, что log4j кэширует размер файла журнала по соображениям производительности, и ваша "перемотка" становится неустойчивой, если несколько JVM получают доступ к тем же файлам.
Ответ 3
Кроме того,
log4j.appender.myAppender=org.apache.log4j.DailyRollingFileAppender
**log4j.appender.myAppender.DatePattern='.'yyyy-MM-dd-HH**
В следующем списке показаны все шаблоны дат, которые определены log4j,
Minutely '.'yyyy-MM-dd-HH-mm application.log.2013-02-28-13-54
Hourly '.'yyyy-MM-dd-HH application.log.2013-02-28-13
Half-daily '.'yyyy-MM-dd-a application.log.2013-02-28-AM app.log.2013-02-28-PM
Daily '.'yyyy-MM-dd application.log.2013-02-28
Weekly '.'yyyy-ww application.log.2013-07 app.log.2013-08
Monthly '.'yyyy-MM application.log.2013-01 app.log.2013-02
Ответ 4
Используйте DailyRollingFileAppender.
В частности, установка его свойства datePattern в '.'yyyy-MM-dd-HH
приведет к тому, что файл будет вращаться каждый час.
Ответ 5
Вам нужно использовать DailyRollingFileAppender. Несмотря на его вводящее в заблуждение имя, он может быть сконфигурирован для запуска в настраиваемые периоды времени до минут.