Подтвердить что ты не робот

Как повернуть файлы журналов в зависимости от времени, а не размера в Log4j?

Я использую Log4j с RollingFileAppender для создания поворота журнала по размеру.

Как я могу настроить его для регистрации в каждом файле за определенное время перед вращением?

Например, чтобы каждый файл журнала содержал один час журналов, вращающийся в верхней части каждого часа?

Я настраиваю Log4j программно в Java с помощью объекта Properties (в отличие от файла log4j.properties)

4b9b3361

Ответ 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. Несмотря на его вводящее в заблуждение имя, он может быть сконфигурирован для запуска в настраиваемые периоды времени до минут.