将我的分析项目从 log4j 1.x 迁移到 log4j 2.x 并观察到第三方依赖为 log4j 1.x

Migrating my analytical project from log4j 1.x to log4j 2.x and observed third party dependency as log4j 1.x

最近,我们使用以下 jars 将我的项目从 log4j 1.x 迁移到 2.x。它使用了很多第三方库,它的子依赖项使用了 log4j-1.2.17.jar 项目。我们使用 help mvn dependency:tree 命令识别了 log4j jar,并排除了 log4j-1.2.17 jar。在使用 log4j 1.2.17 作为 project/module 依赖项 jar 的任何地方添加以下依赖项。

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

排除了 log4j jar zookeeper 和 hadoop-client。 示例:

<dependency>
  <groupId>org.apache.zookeeper</groupId>
  <artifactId>zookeeper</artifactId>
  <exclusions>
    <exclusion>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
    </exclusion>
    <exclusion>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
    </exclusion>
   </exclusions>
</dependency>

打包我的项目后,发现log4j-1.2.17.jar在项目的jars目录下。但是在我们的项目中并没有发现作为依赖或者子依赖。

现在,我的问题是:- 如果我们从项目中删除 "log4j-.1.2.17.jar" 那么它会影响第三方库的任何功能吗?

请提出您的建议。

在 99% 或更多的情况下,删除 Log4J 1.x jar 应该不会造成问题。但是,一些库尝试通过调用 Log4J 内部方法来操作日志记录。在大多数情况下,这些都将被忽略,这不会造成问题。