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

Spring Boot日志配置:如何禁用日志归档并保留多日日志文件?

当然可行!这里是具体解决方案

首先得明确:Spring Boot 默认使用 Logback 作为日志框架,它的默认配置会在每日结束时将当前日志文件归档(通常是重命名为带日期的文件,部分场景会自动压缩)。如果你希望保留多日的原始格式日志文件(不压缩归档),只需要自定义 Logback 的配置即可实现。

具体实现步骤

你需要在项目的 src/main/resources 目录下创建一个名为 logback-spring.xml 的自定义配置文件,替换默认的日志滚动策略:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!-- 读取Spring Boot配置中的日志路径 -->
    <springProperty scope="context" name="LOG_PATH" source="logging.file.path"/>
    
    <!-- 控制台输出(可选,保留默认的控制台日志输出) -->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <!-- 文件输出:按天生成独立日志文件,不压缩归档 -->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 当前正在写入的日志文件 -->
        <file>${LOG_PATH}/app.log</file>
        
        <!-- 基于时间的滚动策略:每天生成一个新文件 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 滚动后的日志文件名格式(不带压缩后缀) -->
            <fileNamePattern>${LOG_PATH}/app.%d{yyyy-MM-dd}.log</fileNamePattern>
            <!-- 保留7天的日志文件,和你原配置的需求一致 -->
            <maxHistory>7</maxHistory>
            <!-- 可选:设置日志总大小上限,防止磁盘被占满 -->
            <totalSizeCap>10GB</totalSizeCap>
            <!-- 禁用压缩:0表示不压缩,避免日志被自动打包成.gz文件 -->
            <compressionLevel>0</compressionLevel>
        </rollingPolicy>
        
        <!-- 日志格式,和Spring Boot默认格式保持一致 -->
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <!-- 针对你的业务包设置DEBUG级别日志 -->
    <logger name="com.example.com" level="DEBUG"/>

    <!-- 根日志级别配置 -->
    <root level="INFO">
        <appender-ref ref="CONSOLE"/>
        <appender-ref ref="FILE"/>
    </root>
</configuration>

关键配置说明

  • TimeBasedRollingPolicy:指定按日期滚动日志,每天结束时会将当前的 app.log 重命名为 app.2024-xx-xx.log,然后自动创建新的 app.log 继续写入。
  • fileNamePattern:定义历史日志的命名格式,这里没有添加 .gz 后缀,确保日志文件以原始文本格式保留,不会被压缩归档。
  • maxHistory:保留最近7天的日志文件,超过7天的会自动删除,和你原配置的需求完全匹配。
  • compressionLevel:设置为0完全禁用压缩,保证所有历史日志都是可直接查看的未压缩文本文件。

效果验证

启动 Spring Boot 应用后,日志会输出到 /home/user/logs/app.log,每天结束后,这个文件会被重命名为带当日日期的文件(比如 app.2024-05-20.log),同时生成新的 app.log。你会在日志目录下看到最近7天的所有原始日志文件,没有任何压缩归档的情况。

内容的提问来源于stack exchange,提问作者Rajith K

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 11:52:51