Вход в файл с прокруткой - могу ли я заархивировать несколько журналов в один файл?

Моя текущая конфигурация logback выглядит так:

<appender name="rolling" class="ch.qos.logback.core.rolling.RollingFileAppender">
  <file>${log.dir}/${log.package}.log</file>
  <encoder>
    <Pattern>${log.pattern}</Pattern>
  </encoder>
  <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
    <fileNamePattern>${log.dir}/${log.package}.%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern>
    <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
      <!-- or whenever the file size reaches 1MB. -->
      <maxFileSize>1MB</maxFileSize>
    </timeBasedFileNamingAndTriggeringPolicy>
    <!-- Keep no more than 3 months data. -->
    <maxHistory>90</maxHistory>
    <cleanHistoryOnStart>true</cleanHistoryOnStart>
  </rollingPolicy>
</appender>

Это прекрасно работает, но раздражает создает несколько файлов ZIP ...1.zip...2.zip и т.п.

Есть ли способ указать имя файла zip как ${log.dir}/${log.package}.%d{yyyy-MM-dd}.log.zip но имена файлов в zip-файле как ${log.dir}/${log.package}.%i.log? Т.е. сделать один zip-файл в день, но каждый раз, когда файл достигает 1 МБ, я заархивирую его как ....1.log, ...2.log и т.п.

1 ответ

Решение

Да, вы можете добавить несколько файлов в zip-файл, используя приложение rollfile с FixedWindowRollingPolicy.

<appender name="ErrorLogs"
        class="ch.qos.logback.core.rolling.RollingFileAppender">
        <target>System.err</target>     
        <file>${log_location}{Error_filename}</file>

        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
            <fileNamePattern>${log_location}{ERR_Zip}</fileNamePattern>
            <minIndex>1</minIndex>
            <maxIndex>3</maxIndex>
        </rollingPolicy>
        <triggeringPolicy
            class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <maxFileSize>${maxFileSize}</maxFileSize>
        </triggeringPolicy>
        <encoder>
            <pattern>${Default_Pattern}</pattern>
        </encoder>
    </appender>

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

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