Как вращать файлы журнала в зависимости от времени, а не размера в Log4j? - PullRequest
18 голосов
/ 11 ноября 2009

Я использую Log4j с RollingFileAppender, чтобы создать ротацию журнала в зависимости от размера.

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

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

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

Ответы [ 5 ]

30 голосов
/ 11 ноября 2009

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

3 голосов
/ 28 февраля 2013

Дополнительно

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
3 голосов
/ 11 ноября 2009

Еще одна вещь, с которой нужно быть осторожным при работе с любым приложением для переноса файлов, - это обеспечить, чтобы только одна JVM одновременно обращалась к определенному файлу журнала. Это связано с тем, что log4j кеширует размер файла журнала по соображениям производительности, и ваш «переходящий» может стать проблематичным, если несколько JVM обращаются к одним и тем же файлам.

2 голосов
/ 11 ноября 2009

Используйте DailyRollingFileAppender .

В частности, если установить для свойства datePattern значение '.'yyyy-MM-dd-HH, файл будет вращаться каждый час.

0 голосов
/ 11 ноября 2009

Вам необходимо использовать DailyRollingFileAppender . Несмотря на вводящее в заблуждение имя, его можно настроить на запуск в настраиваемые периоды времени до минут.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...