在SpringBoot启动程序中覆盖log4j2版本

2022-04-12 00:00:00 spring java spring-boot log4j2

我们正在尝试构建一个SpringBoot Starter,它将以编程方式创建log4j2配置,因此开发人员不必费心创建log4j2.xml文件。问题是,不同版本的log4j2编程API有所不同。我们已经使用log4j2版本2.5测试了我们的代码,它在独立环境中可以正常工作

现在,我们正在尝试将API包含在SpringBoot Starter中,以便所有SpringBoot应用程序都可以包含此Starter,而不必担心log4j配置。

我们面临的问题是,SpringBoot捆绑了自己的log4j版本,而我们无法控制用户将使用哪个版本的SpringBoot。

有没有办法强制SpringBoot启动程序加载版本2.5的log4j2,否则我们的测试SpringBoot应用程序会报告一些在log4j中找不到的方法


解决方案

将log4j2依赖项添加到节很方便 在父项目中,如下所示
<dependencyManagement>
    <dependencies>
        ...
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>2.15.0</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        ...
    </dependencies>
</dependencyManagement>

它将规定项目和模块中的所有log4j2版本。 相反,不需要添加一些log4j2依赖项 独立的。

勾选this question post

如果项目的log4j依赖项仅来自 Spring-Boot-starter-log4j2,它有一个明确的设置方式,参考 春季 博客

<properties>
    <log4j2.version>2.17.0</log4j2.version> 
</properties> 

相关文章