从第三方jar中排除log4j



我正在创建一个web服务,它命中现有的业务代码。所需的处理日志的jar是org.ops4j.pax.logging。我已经把它包含在pom

    <dependency>
       <groupId>org.ops4j.pax.logging</groupId>
       <artifactId>pax-logging-api</artifactId>
       <version>1.6.0</version>
    </dependency>

这个jar允许访问整个业务层使用的特定log4j方法

LOGGER.debug(object, object);

另一个必需的jar是第三方jar。这个jar包含一个不同版本的log4j,它不实现debug(object, object)方法。当我将这个jar添加到pom中时,JVM首先在这个第三方jar中找到log4j类,然后代码失效。

我试图排除第三方jar中的log4j,但无济于事。

<dependency>
  <groupId>...</groupId>
  <artifactId>...</artifactId>
  <version>...</version>        
  <exclusions>      
    <exclusion>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
    </exclusion>
  </exclusions>
</dependency>   

任何想法吗?

这是来自https://www.baeldung.com/slf4j-classpath-multiple-bindings

的正确答案
<exclusions>
    <exclusion>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
    </exclusion>
    <exclusion>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
    </exclusion>
</exclusions>

有时即使排除了log4j, log4j-core也会出现。以下配置对我有效:

<exclusions>
        <exclusion>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
        </exclusion>
        <exclusion>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
        </exclusion>
        <exclusion>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
        </exclusion>
    </exclusions>

最新更新