混合log4j 1.x和log4j 2


问题内容

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

如何在旧库中获取与新代码登录相同文件的代码?

重写旧库应该被认为是最后的选择


问题答案:

您是否知道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!)