logback создавать файлы журнала внутри папки с именем текущей даты
В моем текущем проекте я хочу создать файлы журналов по дате, т.е. файлы журналов должны находиться внутри
папка с именем в качестве даты. Также архивация должна происходить в этой конкретной папке.
Текущий appender, который я использую, выглядит следующим образом (он выполняет архивирование файла журнала в зависимости от размера).
<appender name="AUDITFILE"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${PROJECT_HOME}\\projectname\\audits\\myproject.log</file>
<append>true</append>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${PROJECT_HOME}\\projectname\\audits\\myproject_%d{yyyy-MM-dd}.%i.zip
</fileNamePattern>
<maxHistory>10</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>10KB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<pattern>%date %msg%n
</pattern>
</encoder>
</appender>
1 ответ
Как упомянуто в документации для fileNamePattern, вы можете указать несколько токенов%d, чтобы поместить дату в имя папки имени файла архива:
<fileNamePattern>${PROJECT_HOME}\\projectname\\audits\\%d{yyyy-MM, aux}\\myproject_%d{yyyy-MM-dd}.%i.zip</fileNamePattern>
Обратите внимание, что только один токен%d может быть основным, все остальные токены должны быть помечены как вспомогательные с помощью параметра aux.
Но если вы также хотите поместить его в имя файла неархивированного имени файла, то у вас есть два варианта:
использовать
<timestamp />
элемент для установки переменной, которую вы используете в пути. Но эта временная метка будет установлена только один раз при запуске, поэтому она подходит для пакетных запусков, но не для сервисов.Делайте как (1) выше, но оберните
<appender/>
и<timestamp />
сSiftingAppender
, что позволит повторно оценить временную метку, если используется версия logback >=1.0.12. Не уверен, как именно вы хотите настроитьSiftingAppender
, Но, надеюсь, это поставит вас на правильный путь.