如何在Logback中配置appender实现每5分钟滚动切分日志
你当前配置默认按1分钟滚动的原因是:fileNamePattern中定义的最小时间单位是分钟(%d配置里的mm),logback默认会匹配该最小单位的时间间隔触发滚动。要调整为每5分钟滚动,只需在timeBasedFileNamingAndTriggeringPolicy节点下新增multiple参数指定时间间隔倍数即可。
修改后的完整配置如下:
<appender name="FILE-AUDIT" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>myfile.log</file> <encoder> <pattern>${MY_PATTERN_HERE}</pattern> </encoder> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>myfile.log.%d{dd-MM-yyyy_HH-mm}.%i.gz</fileNamePattern> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>300MB</maxFileSize> <!-- 时间间隔为基础粒度(1分钟)的5倍,即每5分钟触发一次时间滚动 --> <multiple>5</multiple> </timeBasedFileNamingAndTriggeringPolicy> <maxHistory>1000</maxHistory> </rollingPolicy> </appender>
补充说明:
multiple参数的值是基于fileNamePattern最小时间单位的倍数,你当前配置的最小时间单位是1分钟,设为5就对应每5分钟滚动一次;如果后续你要调整为每小时滚动,把fileNamePattern的最小粒度改成小时(删除-mm),multiple设为1即可- 滚动触发逻辑保持你原来的设计:到达5分钟时间间隔或者单个文件大小达到300MB都会触发切分
multiple参数在logback 1.1.7及以上版本原生支持,无需额外修改其他依赖
内容的提问来源于stack exchange,提问作者Murad Zulfugarov
相关产品推荐
相关产品推荐

