Вход в файл с прокруткой - могу ли я заархивировать несколько журналов в один файл?
Моя текущая конфигурация 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, чтобы ни одно из этих ограничений не было минимизировано.