Slf4j Logger问题:历史日志文件被自动删除
解决方案:永久保留所有日志文件
你当前的日志自动删除(仅保留8天内)是因为Spring Boot默认集成的Logback框架,对日志归档的保留天数默认设为7天(加上当天正好8天)。要实现永久保留,需要修改应用日志和Tomcat访问日志两部分的配置:
一、修改应用日志配置(对应app_board.log)
方式1:直接在application.properties中添加配置
无需自定义配置文件,直接覆盖默认的保留限制:
# 设置一个极大值(如99999),等效于永久保留所有归档日志;部分Logback版本支持设为-1表示无限保留 logging.logback.rollingpolicy.max-history=99999 # 可选:禁止应用启动时自动清理历史日志 logging.logback.rollingpolicy.clean-history-on-start=false
方式2:自定义Logback配置文件(更灵活)
如果需要精细控制日志格式或滚动规则,在src/main/resources下创建logback-spring.xml文件,写入以下内容:
<?xml version="1.0" encoding="UTF-8"?> <configuration> <!-- 引入Spring Boot默认的基础配置 --> <include resource="org/springframework/boot/logging/logback/defaults.xml"/> <include resource="org/springframework/boot/logging/logback/console-appender.xml"/> <!-- 自定义文件输出appender,对应你的日志路径 --> <appender name="APP_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>./logs/app/app_board.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- 按日期命名归档日志文件 --> <fileNamePattern>./logs/app/app_board.log.%d{yyyy-MM-dd}</fileNamePattern> <!-- 不设置maxHistory则默认保留所有归档文件;也可设为极大值如99999 --> <!-- <maxHistory>99999</maxHistory> --> <!-- 关闭启动时自动清理历史日志 --> <cleanHistoryOnStart>false</cleanHistoryOnStart> </rollingPolicy> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <!-- 根日志级别及输出目标 --> <root level="INFO"> <appender-ref ref="CONSOLE"/> <appender-ref ref="APP_FILE"/> </root> <!-- 你的自定义包日志级别,与原配置保持一致 --> <logger name="myapp.app.xyz.controller" level="INFO"/> <logger name="myapp.app.xyz.service" level="INFO"/> <logger name="org.hibernate" level="INFO"/> </configuration>
二、修改Tomcat访问日志配置(可选)
如果你的Tomcat访问日志也存在自动删除情况,在application.properties中添加:
# 设置为-1表示不自动删除任何访问日志文件 server.tomcat.accesslog.max-days=-1
注意事项
永久保留日志会持续占用磁盘空间,建议定期手动清理,或根据服务器磁盘容量设置一个合理的保留天数(比如365天),避免磁盘被占满。
内容的提问来源于stack exchange,提问作者Salman Shaikh
相关产品推荐
相关产品推荐

