小编Jes*_*y56的帖子

slf4j/logback/jcl-over-slf4j - 即使jcl-over-slf4j不在依赖项中,仍然路由到logback?

在尝试记录依赖项时,我遇到以下情况:

<repositories>
    <repository>
        <id>version99</id>
        <url>http://version99.qos.ch/</url>
    </repository>
</repositories>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>99-empty</version>
        </dependency>
    </dependencies>
</dependencyManagement>

<dependencies>
    <dependency>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.7.25</version>
    </dependency>
    <!--<dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>jcl-over-slf4j</artifactId>
        <version>1.7.25</version>
    </dependency>-->
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-core</artifactId>
        <version>1.2.3</version>
    </dependency>
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>1.2.3</version>
    </dependency>
</dependencies>
Run Code Online (Sandbox Code Playgroud)

值得注意的是,依赖关系jcl-over-slf4j被注释掉了.令我惊讶的是,来自Spring的日志仍由Logback处理.这怎么可能?jcl和slf4j之间没有活动桥,那么我们如何才能在Logback中结束?

我证实了这一点:

  • commons-logging-99-empty.jar在classpath中.
  • 没有jcl-over-slf4j提到mvn dependency:tree -Dverbose -Dincludes=org.slf4j

我真的很困惑.我期待NoClassDefFoundError上课commons-logging.

请注意,我无意jcl-over-slf4j在评论中留下这种依赖.我只是想了解发生了什么.我以为我终于明白了这些日志依赖,但显然,在实践中,它的行为完全不同于我的预期.

java spring slf4j maven apache-commons-logging

3
推荐指数
1
解决办法
518
查看次数

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

我的日志依赖项目前如下所示:

<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由于某种原因它仍然在我的类路径中。我应该排除它还是不会引起任何问题?

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

java log4j slf4j maven

1
推荐指数
1
解决办法
6113
查看次数

标签 统计

java ×2

maven ×2

slf4j ×2

apache-commons-logging ×1

log4j ×1

spring ×1