В 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 месяца.

Обратите внимание, что в настоящее время нет поддержки для ограничения количества файлов журнала, хранящихся за определенную дату или возраст и т.д. Вы можете ограничить количество журнальных файлов за период времени.