【问题标题】:Mixing log4j 1.x and log4j 2 with third party libraries dependending on log4j 1.x将 log4j 1.x 和 log4j 2 与依赖于 log4j 1.x 的第三方库混合
【发布时间】:2017-02-27 08:22:34
【问题描述】:

我正在维护一个使用带有大型代码库的 log4j 1.x 的 Maven 项目。 log4j 1.x 不仅在现有代码中使用,它还被项目所依赖的一些第三方库使用。

我现在想开始使用 log4j 2,但不知道这是否值得。

我知道可以将两者混合使用(参见Mixing log4j 1.x and log4j 2),但是依赖 log4j 1.x 的第三方库呢,恐怕会发生冲突。

所以我应该坚持使用 log4j 1.x 还是升级到 log4j 2 冒着依赖地狱的风险?

【问题讨论】:

  • 只有你才能权衡 log4j 2 的优点与 “依赖地狱”的缺点。我们可能对此都有意见,但我们不知道您的项目和要求。投票结束时“主要基于意见”。
  • @Andreas 客观地说:我的项目是否有可能依赖 log4j 2 和 log4j 1.x 上的第三方库而不会产生冲突?这不是意见问题,而是事实,不是吗?
  • 事实上,如果您阅读了您链接的问题的答案以及 Log4j 1 到 Log4j 2 桥的文档,您就会知道该桥将重定向所有Log4j 1 调用 Log4j 2 实现,因为这就是桥接器的作用。只要您排除任何实际的 Log4j 1 实现,就不会有冲突。排除 Log4j 1 的 “依赖地狱” 是否值得 Log4j 2 的功能,如前所述,由您决定,并且完全基于意见。

标签: java maven logging log4j log4j2


【解决方案1】:

我自己也是这样做的。我认为不会有任何问题。 甚至我做的项目也有第三方库。

您可以简单地使用 log4j-1.2-api-2.x.jar。 删除旧的 log4j-1.2.x.jar 并替换为以下三个 jar:

  1. log4j-1.2-api-2.x - 将根据较旧的 log4j 版本处理第三方库。
  2. log4j-api-2.x.jar
  3. log4j-core-2.x.jar

此外,对于您自己的代码,您可以按照迁移步骤开始使用 log4j2 api,第三方库将继续使用旧版本和新版本之间的桥梁,即 log4j-1.2-api-2.x.jar(又名 log4j 1 .x 桥)

以下是官方文档:

Migrate from log4j-1.x to log4j-2

【讨论】:

    【解决方案2】:

    似乎自从@Nitin 回答了这个问题后,命名可能已经改变了。根据log4j site,Maven依赖为:

    <dependencies>
      <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-1.2-api</artifactId>
        <version>2.2</version>
      </dependency>
    </dependencies>
    

    【讨论】:

      猜你喜欢
      • 2014-11-18
      • 1970-01-01
      • 1970-01-01
      • 2019-02-05
      • 1970-01-01
      • 2022-01-23
      • 1970-01-01
      • 2019-04-17
      • 1970-01-01
      相关资源
      最近更新 更多