Spring Boot项目logback配置按大小限制未触发归档问题求助
问题原因
你当前配置不触发归档的核心问题是FixedWindowRollingPolicy的使用规则不匹配:
FixedWindowRollingPolicy仅支持%i序号占位符,你的fileNamePattern中加入了%d日期占位符,两者冲突导致滚动规则失效- 若需要同时按日期和文件大小滚动归档,不能使用
FixedWindowRollingPolicy + SizeBasedTriggeringPolicy的组合,需要替换为SizeAndTimeBasedRollingPolicy
其他需要检查的遗漏项
- 确认
${APP_LOG_ROOT}/archivedLogs/info目录存在且应用进程有读写权限,logback默认不会自动创建多级归档目录 - 确认你配置的
application.log这个appender已经被添加到root logger或者对应业务包的logger引用中,未关联的appender不会生效 - 可以在启动时增加logback debug参数
-Dlogback.debug=true,查看控制台输出的配置加载日志,排查占位符是否正常解析、规则是否加载成功
修正方案
方案1:仅按文件大小滚动(保留FixedWindowRollingPolicy)
移除fileNamePattern中的%d占位符,示例配置:
<appender name="application.log" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${APP_LOG_ROOT}/application.log</file> <encoder> <pattern>${LOG_PATTERN}</pattern> </encoder> <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> <fileNamePattern>${APP_LOG_ROOT}/archivedLogs/info/application-%i.log </fileNamePattern> <minIndex>1</minIndex> <maxIndex>10</maxIndex> </rollingPolicy> <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> <maxFileSize>100MB</maxFileSize> </triggeringPolicy> </appender>
方案2:同时按日期和文件大小滚动
替换滚动策略为SizeAndTimeBasedRollingPolicy,无需单独配置触发策略,示例配置:
<appender name="application.log" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${APP_LOG_ROOT}/application.log</file> <encoder> <pattern>${LOG_PATTERN}</pattern> </encoder> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <!-- 日期格式可按需调整,示例为按天归档 --> <fileNamePattern>${APP_LOG_ROOT}/archivedLogs/info/application-%d{yyyy-MM-dd}-%i.log </fileNamePattern> <maxFileSize>100MB</maxFileSize> <!-- 保留30天内的日志 --> <maxHistory>30</maxHistory> <!-- 所有归档日志总大小上限,超过会自动删除最旧的归档 --> <totalSizeCap>10GB</totalSizeCap> </rollingPolicy> </appender>
内容的提问来源于stack exchange,提问作者Amit Gupta
相关产品推荐
相关产品推荐

