我当前的 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
? IE。每天制作一个 zip 文件,但每次文件达到 1mb 时,我会将其压缩为 ....1.log
、...2.log
等。
最佳答案
是的,您可以使用带有FixedWindowRollingPolicy的rollingfileappender将多个文件添加到zip文件中。
<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 设置较高的值,以便这些约束都不能最小化
关于java - Logback 滚动文件附加程序 - 我可以将多个日志压缩到一个文件中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24119032/