主要是使用AsyncAppender 提供异步功能,然后使用 immediteFlush配置使用缓存(缓存8k).
注意: 高版本的logback 已经指出SizeAndTimeBasedRollingPolicy , 我的版本是1.0.13可以使用SizeAndTimeBasedFNATP实现。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<substitutionProperty name="log.base" value="/home/wtposp/logs" />
</appender>-->
<appender name="rollout" class="ch.qos.logback.core.rolling.RollingFileAppender">
<Encoding>UTF-8</Encoding>
<file>${log.base}/wtposp.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${log.base}/%d{yyyy-MM-dd}/wtposp-%i.log.zip</fileNamePattern>
<MaxHistory>30</MaxHistory>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<!-- 设置文件大于1KB进行压缩归档 -->
<maxFileSize>100MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<pattern>%date{HH:mm:ss} [%X{sysUUID}] %-5level %c{0}:%L - %msg%n</pattern>
<immediateFlush>false</immediateFlush>
</encoder>
</appender>
<appender name ="ASYNC" class= "ch.qos.logback.classic.AsyncAppender">
<!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
<discardingThreshold>0</discardingThreshold>
<!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->
<queueSize>256</queueSize>
<!-- 添加附加的appender,最多只能添加一个 -->
<appender-ref ref ="rollout"/>
<!--<appender-ref ref ="errorAppender"/>-->
</appender>
<root>
<level value="INFO" />
<appender-ref ref="ASYNC" />
</root>
</configuration>