В log4j 1.2 для log4j 2 миграции, что делать с классом DailyRollingFileAppender?
Я работаю над переносом проекта Java с помощью log4j 1.2 для входа в систему с использованием log4j 2.
log4j 1.x имеет класс org.apache.log4j.DailyRollingFileAppender
который указан в файле конфигурации проекта log4j.properties. Класс с таким же именем DailyRollingFileAppender
больше не существует в log4j 2. Интересно, может DailyRollingFileAppender
роль DailyRollingFileAppender
быть заменена каким-либо другим классом (классами) или некоторой заменой конфигурации или реализации в log4j 2.
В руководстве по миграции подчеркивается, что приложение не должно обращаться к методам и классам, внутренним для log4j 1.x, таким как Appender
чтобы его можно было переносить на log4j 2. Но чтобы выполнить миграцию, что можно сделать с DailyRollingFileAppender
? Можно ли заменить его некоторой пользовательской конфигурацией или комбинацией классов в log4j 2? В руководстве по миграции есть несколько примеров конфигурации, в частности, один с FileAppender
, но как насчет DailyRollingFileAppender
? Это что-то довольно близко к базовому FileAppender
:
Из log4j 1.2 API Javadoc, класс org.apache.log4j.DailyRollingFileAppender
DailyRollingFileAppender расширяет FileAppender таким образом, что основной файл скатывается с выбранной пользователем частотой. Наблюдалось, что DailyRollingFileAppender обнаруживает проблемы синхронизации и потери данных. Сопутствующий компонент log4j включает альтернативы, которые следует учитывать для новых развертываний и которые обсуждаются в документации для org.apache.log4j.rolling.RollingFileAppender.
Ответы
Ответ 1
Вы ищете приложение RollingFile
<RollingFile name="DAILY_LOG" fileName="log/daily.log"
filePattern="log/%d{ddMMyyyy}_daily.log"
>
<PatternLayout pattern="%d [%7r] %5p - %c - %m%n"/>
<Policies>
<TimeBasedTriggeringPolicy interval="1"/>
</Policies>
</RollingFile>
Предыдущий образец загружается днем, причем интервал составляет 1 единица, который определяется наименьшей единицей поиска даты в шаблоне файла. Другими словами, если шаблон даты был d{MMyyyy}
, то интервал = 1 соответствует периоду опрокидывания 1 месяца.
Обратите внимание, что в настоящее время нет поддержки для ограничения количества файлов журнала, хранящихся за определенную дату или возраст и т.д. Вы можете ограничить количество журнальных файлов за период времени.