Jes*_*y56 1 java log4j slf4j maven
我的日志依赖项目前如下所示:
<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>
Run Code Online (Sandbox Code Playgroud)
我注意到commons-logging.jar由于某种原因它仍然在我的类路径中。我应该排除它还是不会引起任何问题?
到目前为止我没有注意到任何问题,但我仍然想知道那个罐子是否仍然会以某种方式引起问题。
有使用的依赖项commons-logging。如果它不存在,您将NoClassDefFoundErrors在他们尝试登录时收到。如果有可能让这些人甚至不尝试使用依赖项,那就不会有问题。但这不太可能。
但是,如果他们使用commons-logging而你正在使用SLF4J,那就有问题了。他们登录在错误的位置(从您的角度来看)。这就是伐木桥发挥作用的地方。它们实现不同日志记录框架的公共 API,但将日志记录重定向到您正在使用的内容。
因为SLF4J有几个桥(双向),所以commons-logging您不是引入 ,而是引入jcl-over-slf4j。库会认为他们正在使用commons-logging,而实际上它们正在使用SLF4J(然后使用 Logback 等实际的日志记录实现)。
容易吧?;)
| 归档时间: |
|
| 查看次数: |
6113 次 |
| 最近记录: |