尝试更新旧版 Spring Boot 应用程序的 log4j2(使用 Spring-boot-parent-1.5.6.RELEASE) - 使用多模块
尝试了 spring 在最近的文档中建议的所有方法,但没有一个起作用。
尝试过的选项:
选项1 - 添加到属性
<properties>
<log4j2.version>2.17.0</log4j2.version>
</properties>
选项 2 - 添加 starter-log4j2 并排除核心,稍后添加 log4j 核心(最新)
<dependency>
<groupid>org.springframework.boot</groupid>
<artifactid>spring-boot-starter-log4j2</artifactid>
<version>2.6.1</version>
<exclusions>
<exclusion>
<groupid>org.apache.logging.log4j</groupid>
<artifactid>log4j-core</artifactid>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupid>org.apache.logging.log4j</groupid>
<artifactid>log4j-core</artifactid>
<version>2.15.0</version>
</dependency>
选项 3 - 就是上面的选项以及 log4j2 api
<dependency>
<groupid>org.springframework.boot</groupid>
<artifactid>spring-boot-starter-log4j2</artifactid>
<exclusions>
<exclusion>
<groupid>org.apache.logging.log4j</groupid>
<artifactid>log4j-core</artifactid>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupid>org.apache.logging.log4j</groupid>
<artifactid>log4j-api</artifactid>
<version>2.16.0</version>
</dependency>
<dependency>
<groupid>org.apache.logging.log4j</groupid>
<artifactid>log4j-core</artifactid>
<version>2.16.0</version>
</dependency>
但是导入的依赖项仍然是 slf4j-over-log4j(1.7.25)、log4j(2.7, 2.11.1)。我还能做些什么吗?
最佳答案
选项 1 应该有效。
- 使用
mvn clean install
构建您的项目 - 检查 jar 文件的内容:转到 your_project/target 目录并运行
jar tf your-project.jar
命令。应该只有 log4j-core-2.17.0.jar 并且没有其他版本的 log4j-core
编辑:同时更新子模块中的 log4j-core 版本
关于Spring Boot父log4j2更新-漏洞修复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70497653/