Log4j日志滚动功能失效求助:SpringBoot从Logback切换后异常
问题分析与解决办法
你的核心问题很明确:你在application.properties里用了Logback专属的滚动配置项,但现在切换到了Log4j2,这些配置对Log4j2完全无效,所以日志滚动功能失效。下面分步骤帮你解决:
1. 优化依赖(可选)
你的pom.xml里,log4j-spring-boot已经被spring-boot-starter-log4j2包含,可以删掉重复依赖,简化后如下:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-log4j2</artifactId> </dependency>
2. 修正日志滚动配置
Log4j2不识别logging.logback.*开头的属性,你有两种配置方式可选:
方式一:用application.properties快速配置(适合简单场景)
替换原来的Logback相关配置,改成Log4j2对应的属性:
# 基础日志配置 logging.file.name=logs/app.log logging.pattern.file=%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n # Log4j2滚动规则 logging.log4j2.rollingPolicy.fileNamePattern=logs/app-%d{yyyy-MM-dd}-%i.log logging.log4j2.rollingPolicy.maxFileSize=5MB logging.log4j2.rollingPolicy.maxHistory=100 # 可选:设置总日志文件大小上限,比如100MB # logging.log4j2.rollingPolicy.totalSizeCap=100MB
方式二:用独立log4j2.xml配置(推荐,复杂场景更灵活)
在src/main/resources下新建log4j2.xml,这是Log4j2的标准配置文件,功能更全面。示例配置如下:
<?xml version="1.0" encoding="UTF-8"?> <Configuration status="WARN"> <Appenders> <!-- 控制台输出 --> <Console name="Console" target="SYSTEM_OUT"> <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n"/> </Console> <!-- 文件滚动输出 --> <RollingFile name="RollingFile" fileName="logs/app.log" filePattern="logs/app-%d{yyyy-MM-dd}-%i.log"> <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n"/> <Policies> <!-- 按5MB大小触发滚动 --> <SizeBasedTriggeringPolicy size="5MB"/> <!-- 可选:同时按天滚动 --> <TimeBasedTriggeringPolicy/> </Policies> <!-- 同一日期下的文件序号,避免重名 --> <DefaultRolloverStrategy max="100"/> <!-- 保留最近100天的日志文件 --> <Delete basePath="logs" maxDepth="1"> <IfFileName glob="app-*.log"/> <IfLastModified age="100d"/> </Delete> </RollingFile> </Appenders> <Loggers> <!-- 根日志级别 --> <Root level="info"> <AppenderRef ref="Console"/> <AppenderRef ref="RollingFile"/> </Root> </Loggers> </Configuration>
使用该配置后,application.properties里的日志配置可简化或直接删除,完全交给log4j2.xml管理。
3. 验证效果
重启项目后,当日志文件达到5MB时,会自动生成带日期和序号的新日志文件,旧文件会按配置保留100天或最多100个。
内容的提问来源于stack exchange,提问作者Morkus
相关产品推荐
相关产品推荐

