gpt4 book ai didi

java - Log4j2/slf4j - 是否应该从类路径中删除 commons-logging.jar?

转载 作者:行者123 更新时间:2023-11-29 04:24:32 25 4
gpt4 key购买 nike

我的日志依赖项目前看起来像这样:

<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-bom</artifactId>
<version>2.9.1</version>
<type>pom</type>
<scope>import</scope>
</dependency>

<dependencies>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.25</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
</dependency>

我注意到 commons-logging.jar 出于某种原因仍在我的类路径中。我应该排除它还是不会引起任何问题?

到目前为止我没有注意到任何问题,但我仍然想知道那个 jar 是否仍然会以某种方式引起问题。

最佳答案

有些依赖使用commons-logging。如果它不存在,您将在他们尝试登录时收到 NoClassDefFoundErrors。如果有可能让那些甚至不尝试 使用依赖项,那将不是问题。然而,这不太可能。

但是,如果他们使用 commons-logging 而您使用的是 SLF4J,那么就会出现问题。他们登录错误的地方(从你的角度来看)。这就是日志桥开始工作的地方。它们实现了不同日志记录框架的公共(public) API,但将日志记录重定向到您正在使用的内容。

对于 SLF4Jseveral bridges (两种方式),所以不是引入 commons-logging,而是引入 jcl-over-slf4j。图书馆会认为他们正在使用 commons-logging,而实际上他们正在使用 SLF4J(然后使用实际的日志记录实现,如 Logback) .

简单吧? ;)

关于java - Log4j2/slf4j - 是否应该从类路径中删除 commons-logging.jar?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47043940/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com