Как я могу получить log4j для удаления старых вращающихся файлов журнала? - PullRequest
55 голосов
/ 26 июня 2009

Как я могу получить log4j для удаления старых вращающихся файлов журнала? Я знаю, что могу настроить автоматические задания (cron для UNIX и запланированное задание для Windows), но я хочу, чтобы он был кроссплатформенным, и я хочу, чтобы он был в конфигурации журнала нашего приложения как часть нашего приложения, а не как отдельный код снаружи в ОС конкретные языки сценариев. Наше приложение написано не на языках сценариев ОС, и я не хочу делать с ними эту часть.

Ответы [ 3 ]

50 голосов
/ 26 июня 2009

RollingFileAppender делает это. Вам просто нужно установить для maxBackupIndex максимальное значение для файла резервной копии.

40 голосов
/ 26 июня 2009

Журналы вращаются по какой-то причине, так что вы можете хранить только очень много файлов журналов. В log4j.xml вы можете добавить это к вашему узлу:

<param name="MaxBackupIndex" value="20"/>

Значение указывает log4j.xml хранить только 20 повернутых файлов журнала. Вы можете ограничить это до 5, если хотите, или даже 1. Если ваше приложение не регистрирует такое большое количество данных, и у вас есть 20 файлов журналов, охватывающих последние 8 месяцев, но вам нужны журналы только на несколько недель, тогда я думаю, что вы необходимо настроить параметры log4j.xml "MaxBackupIndex" и "MaxFileSize".

В качестве альтернативы, если вы используете файл свойств (вместо xml) и хотите сохранить 15 файлов (например)

log4j.appender.[appenderName].MaxBackupIndex = 15
8 голосов
/ 01 мая 2014

Нет значения по умолчанию для управления удалением старых файлов журнала, созданных DailyRollingFileAppender. Но вы можете написать свой собственный Appender, который удаляет старые файлы журнала почти так же, как параметр maxBackupIndex для RollingFileAppender.

Найдены простые инструкции здесь

С 1 :

Если вы пытаетесь использовать Apache Log4J DailyRollingFileAppender для файла ежедневного журнала, вам может потребоваться указать максимальное количество файлов, которые следует сохранить. Как и в RollingFileAppender, поддерживается maxBackupIndex. Но текущая версия Log4j (Apache log4j 1.2.16) не предоставляет никакого механизма для удаления старых файлов журналов, если вы используете DailyRollingFileAppender. Я попытался внести небольшие изменения в исходную версию DailyRollingFileAppender, чтобы добавить свойство maxBackupIndex. Таким образом, можно будет очистить старые файлы журналов, которые могут не потребоваться для будущего использования.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...