You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Spring Boot应用如何设置日志文件格式为server.log.2017-12-22.gz?

Spring Boot 配置日志按日期压缩归档

嘿,这个需求单纯靠application.properties里的基础日志参数配置是实现不了的,得借助Spring Boot默认集成的Logback的滚动归档策略来搞定。下面是具体的实现步骤:

1. 新增Logback配置文件

在你的项目src/main/resources目录下创建一个名为logback-spring.xml的配置文件(用这个文件名可以更好地和Spring Boot的环境配置结合)。

2. 配置滚动归档规则

把下面的配置内容复制到logback-spring.xml里,我已经帮你做好了按日归档并压缩的设置:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!-- 定义日志格式,和你原来的pattern一致 -->
    <property name="LOG_PATTERN" value="%d{yyyy-MM-dd } [%thread] %-5level %logger{36} - %msg%n"/>
    <!-- 日志存储目录 -->
    <property name="LOG_DIR" value="/var/opt/VS_Logs"/>

    <!-- 控制台输出appender -->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${LOG_PATTERN}</pattern>
        </encoder>
    </appender>

    <!-- 滚动文件输出appender,实现按日归档压缩 -->
    <appender name="ROLLING_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 当前日志文件 -->
        <file>${LOG_DIR}/server.log</file>
        <encoder>
            <pattern>${LOG_PATTERN}</pattern>
        </encoder>
        <!-- 滚动策略:按时间滚动,每天生成一个归档文件 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 归档文件的路径和格式,这里就会生成server.log.2017-12-22.gz这样的文件 -->
            <fileNamePattern>${LOG_DIR}/server.log.%d{yyyy-MM-dd}.gz</fileNamePattern>
            <!-- 可选:保留归档日志的天数,比如保留30天 -->
            <maxHistory>30</maxHistory>
            <!-- 可选:限制归档日志总大小,比如最多10GB -->
            <totalSizeCap>10GB</totalSizeCap>
        </rollingPolicy>
    </appender>

    <!-- 根日志配置,指定输出级别和使用的appender -->
    <root level="INFO">
        <appender-ref ref="CONSOLE"/>
        <appender-ref ref="ROLLING_FILE"/>
    </root>
</configuration>

3. 移除原application.properties中的日志配置

把你原来在application.properties里的这两行删掉,避免和Logback配置冲突:

logging.pattern.file= "%d{yyyy-MM-dd } [%thread] %-5level %logger{36} - %msg%n"
logging.file=/var/opt/VS_Logs/server.log

效果验证

启动你的Spring Boot应用后,当天的日志会正常写入/var/opt/VS_Logs/server.log,到了第二天(或者手动触发滚动的话),前一天的日志文件会被自动压缩成server.log.xxxx-xx-xx.gz的格式,完全符合你的需求。

内容的提问来源于stack exchange,提问作者Deepesh Rathore

火山引擎 最新活动