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.

Но если вы также хотите поместить его в имя файла неархивированного имени файла, то у вас есть два варианта:

  1. использовать <timestamp /> элемент для установки переменной, которую вы используете в пути. Но эта временная метка будет установлена ​​только один раз при запуске, поэтому она подходит для пакетных запусков, но не для сервисов.

  2. Делайте как (1) выше, но оберните <appender/> и <timestamp /> с SiftingAppender, что позволит повторно оценить временную метку, если используется версия logback >=1.0.12. Не уверен, как именно вы хотите настроить SiftingAppender, Но, надеюсь, это поставит вас на правильный путь.

Другие вопросы по тегам