主要是使用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>