当前springboot版本为3.3.4之后版本 与之前版本配置不同
1.引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
<version>3.3.4</version>
</dependency>
2.配置文件
application.yml
logging:
file:
name: spring_log.log
path: ./logs
config: classpath:logback-spring.xml
src/main/resources下logback-spring.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- SpringBoot默认logback的配置 -->
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<springProperty scope="context" name="logName" source="logging.file.name"/>
<springProperty scope="context" name="logPath" source="logging.file.path"/>
<!-- <property name="LOG_HOME" value="/logs/${logName}"/>-->
<!-- 1. 输出到控制台 -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>DEBUG</level>
</filter>
<encoder>
<Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<!-- 2. 输出到文件 -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${logPath}/${logName}</file>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} -%5level ---[%15.15thread] %-40.40logger{39} : %msg%n%n</pattern>
<charset>UTF-8</charset>
</encoder>
<!-- 使用SizeAndTimeBasedRollingPolicy替代旧的策略 -->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- 滚动后的日志文件命名模式 -->
<fileNamePattern>${logPath}/%d{yyyy-MM-dd}-%i.log</fileNamePattern>
<!-- 日志文件的最大大小 -->
<maxFileSize>10MB</maxFileSize>
<!-- 最大保留30天的日志 -->
<maxHistory>30</maxHistory>
<!-- 总日志文件大小不超过3GB -->
<totalSizeCap>3GB</totalSizeCap>
</rollingPolicy>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
</appender>
<!-- <!– 开发环境输出至控制台 –>-->
<!-- <springProfile name="dev">-->
<!-- <root level="INFO">-->
<!-- <appender-ref ref="CONSOLE"/>-->
<!-- <appender-ref ref="FILE"/>-->
<!-- </root>-->
<!-- </springProfile>-->
<root level="INFO">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE"/>
</root>
<!-- <!– 生产环境输出至文件 –>-->
<!-- <springProfile name="prod">-->
<!-- <root level="INFO">-->
<!-- <appender-ref ref="CONSOLE"/>-->
<!-- <appender-ref ref="FILE"/>-->
<!-- </root>-->
<!-- </springProfile>-->
</configuration>
修改内容说明:
使用 SizeAndTimeBasedRollingPolicy:
该策略同时支持按时间和文件大小滚动日志。与旧的 TimeBasedRollingPolicy 类相比,它是更推荐的滚动策略。
文件命名模式调整:
在 fileNamePattern 中,使用 %d{yyyy-MM-dd}-%i.log 作为文件名格式,这允许日志按照日期命名,并在同一天滚动日志时通过 %i 生成分片文件(如 2024-10-01-1.log, 2024-10-01-2.log 等)。
限制日志大小和保留时间:
maxFileSize 设置为 10MB,表示单个日志文件的最大大小。
maxHistory 设置为 30,表示最多保留30天的日志文件。
totalSizeCap 设置为 3GB,表示日志总大小不能超过 3GB。达到该限制时,将删除最早的日志文件。
总结
在 Spring Boot 升级至 3.3.4 后,由于底层 Logback 版本的更新,原先使用的 TimeBasedRollingPolicy 类和日志文件名中的 %i 令牌会引发兼容性问题。通过调整日志回滚策略,使用新的 SizeAndTimeBasedRollingPolicy 并去除不兼容的文件命名模式,可以顺利解决这些问题,使日志系统恢复正常运行。
本站资源均来自互联网,仅供研究学习,禁止违法使用和商用,产生法律纠纷本站概不负责!如果侵犯了您的权益请与我们联系!
转载请注明出处: 免费源码网-免费的源码资源网站 » springboot3配置日志logback
发表评论 取消回复