升级Spring Boot父版本至1.5.9.RELEASE时出现log4j依赖版本缺失错误
解决Spring Boot 1.5.9.RELEASE升级后spring-boot-starter-log4j版本缺失问题
我之前升级Spring Boot版本的时候也踩过这个坑,原因其实很明确:Spring Boot从1.4.x版本开始就已经弃用了spring-boot-starter-log4j,这个starter不再被父依赖管理版本,所以构建时会直接抛出版本缺失的错误。
给你几个可行的解决方案,按需选择:
方案一:切换到官方推荐的Log4j 2(优先推荐)
Spring Boot官方现在主推Log4j 2作为日志框架,对应的spring-boot-starter-log4j2会被父依赖自动管理版本,直接替换原来的依赖即可:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-log4j2</artifactId> </dependency>
如果你的项目里有默认引入的spring-boot-starter-logging(大部分starter会间接引入),记得排除它避免冲突:
<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>
方案二:继续使用Log4j 1.x(不推荐)
如果因为历史项目限制必须继续用Log4j 1.x,需要手动指定spring-boot-starter-log4j的版本,同时也要排除默认日志依赖:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-log4j</artifactId> <version>1.3.8.RELEASE</version> <!-- 选择与1.5.9兼容的旧版本 --> </dependency> <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>
⚠️ 注意:Log4j 1.x已经停止维护多年,存在已知安全漏洞,强烈建议不要继续使用这个方案。
方案三:切换回默认的Logback日志框架
如果没有特殊的日志定制需求,直接移除spring-boot-starter-log4j依赖即可。Spring Boot默认集成的Logback已经能满足绝大多数场景,而且不需要额外配置版本:
<!-- 移除spring-boot-starter-log4j依赖 --> <!-- 无需额外声明spring-boot-starter-logging,大部分starter会自动引入 -->
内容的提问来源于stack exchange,提问作者Lakshitha Gihan
相关产品推荐
相关产品推荐

