You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 05:44:54