混合 log4j 1.x 和 log4j 2
Posted
技术标签:
【中文标题】混合 log4j 1.x 和 log4j 2【英文标题】:Mixing log4j 1.x and log4j 2 【发布时间】:2014-11-18 06:04:28 【问题描述】:我有一个使用 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 实现。常见问题解答中有一个diagram 可以澄清一些事情。 (不要忘记从类路径中删除旧的 log4j-1.2 jar!)
【讨论】:
看来我也错过了log4j-jcl
,但我现在可以进行日志记录了,谢谢!
自定义 Log4j2 附加程序:是的。自定义 log4j 1.2 附加程序:没有。这是一个 API 适配器,实现已更改。您需要将自定义扩展移植到 Log4j2。
这会影响配置文件吗,这意味着我需要将我的log4j1文件迁移到log4j2语法的语法?
是的,log4j 2 不理解 log4j1.x 配置文件。
我们在哪里将此系统属性“log4j1.compatibility”设置为文档中提到的“true”值 - logging.apache.org/log4j/2.13.0/manual/compatibility.html以上是关于混合 log4j 1.x 和 log4j 2的主要内容,如果未能解决你的问题,请参考以下文章