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

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

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

4b9b3361

Ответ 1

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

Ответ 2

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

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

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

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

log4j.appender.[appenderName].MaxBackupIndex = 15

Ответ 3

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

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

Из 1:

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