混合 log4j 1.x 和 log4j 2

2022-09-01 10:41:43

我有一个使用log4j2编写的新应用程序,以利用它的一些新功能。它使用的一个库有点旧,是用log4j 1.x构建的。我遇到了一个问题,即应用程序中的新代码写入日志,但旧库中的代码不会写入日志。我甚至有一个类,它是旧库中某些东西的子类,也是由旧库中的代码调用的,并且此代码也不会写入日志。我已将应用程序配置为使用 log4j2 版本 2.0.2,并且在引用旧库作为 maven 依赖项时显式排除了 log4j。

如何让旧库中的代码与新代码登录到同一文件中?

重写旧库应该被认为是最后的手段


答案 1

您是否知道 log4j2 包含一个用于 log4j-1.2 的网桥?您可以通过删除旧的log4j-1.2.17.jar来使用它,并包括以下三个jar:

  • log4j-api-2.x.jar
  • log4j-core-2.x.jar
  • log4j-1.2-api-2.x.jar

这将导致应用程序对 log4-1.2 API 进行的所有调用都路由到 log4j2 实现。常见问题解答有一个图表,可以澄清事情。(不要忘记从类路径中删除旧的log4j-1.2 jar!


答案 2

推荐