2014-09-23 50 views
13

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

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

重写旧库应该被认为是一个不得已的选择

回答

24

您是否知道log4j2包括log4j的-1.2的桥梁?您可以通过删除旧的log4j-1.2.17.jar使用它,包括这三个罐子:

  • 的log4j-API 2.x.jar
  • log4j的核心 - 2.x.jar
  • 的log4j-1.2-API 2.x.jar

这将导致你的应用程序对log4-1.2 API所有呼叫路由到log4j2实施。常见问题有一个diagram可能会澄清事情。 (别忘了从类路径中删除旧的log4j-1.2 jar!)

+1

看来我还缺少'log4j-jcl',但我现在正在进行日志记录工作,谢谢! – FrustratedWithFormsDesigner 2014-09-24 14:11:50

+0

当你有自定义的appender时,这个工作吗? – 2017-07-03 08:37:33

+0

自定义Log4j2 appenders:是的。自定义log4j 1.2 appenders:不。这是一个API适配器,实现已经改变。您需要将自定义扩展程序移植到Log4j2。 – 2017-07-03 08:41:21