将 log4j 1.x 和 log4j 2 与依赖于 log4j 1.x 的第三方库混合

2023-12-29

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

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

我知道可以将两者混合使用(参见混合 log4j 1.x 和 log4j 2 https://stackoverflow.com/questions/26005149/mixing-log4j-1-x-and-log4j-2)但是依赖log4j 1.x的第三方库呢,恐怕会出现冲突。

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


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

您可以简单地使用 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 桥接器) )

以下是官方文档:

从 log4j-1.x 迁移到 log4j-2 https://logging.apache.org/log4j/2.x/manual/migration.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 log4j 1.x 和 log4j 2 与依赖于 log4j 1.x 的第三方库混合 的相关文章

随机推荐

  • Keras 准确率停留在 50%

    Code import numpy as np from keras preprocessing image import ImageDataGenerator from keras models import Sequential Mod
  • 如何调用类的析构函数?

    我有一个简单的 C 代码 但我不知道如何使用析构函数 class date public int day date int m day m date cout lt lt I wish you have entered the year n
  • setMaximumFractionDigits 的问题

    setMaximumFractionDigits 不适用于以下代码 NSString input 80 90 NSNumberFormatter numberFormatter NSNumberFormatter alloc init nu
  • 在傅立叶插值的上下文中返回函数的“传统”符号

    在数值分析中 我们学生有义务在 R 中实现代码 给定函数 f x 找到其傅立叶插值 tN x 并计算插值误差 f x t N x int 0 2 pi f x t N x 2 或各种不同的 N 我首先尝试根据以下公式计算 d 系数 d fr
  • C#:实时组合框更新

    我一直在尝试将文本文件加载到组合框中 然后创建一个按钮将我在组合框中所做的任何更改保存回文本文件 问题是 当我在组合框中输入某些内容时 所选的 项目 不会更新 我可以更改句子 但是一旦单击 保存 按钮 这也会更新组合框 它就会回到我编辑之前
  • 以 root 身份启动 Mysql

    我已经以 root 身份在我的测试服务器上启动了 mysql 我已经添加了 user root my cnf 中的行 由于我希望测试服务器升级到生产服务器 因此我想注释掉这一行并重新启动 有没有什么副作用 预期数据丢失 MySQL 的 ro
  • 出现错误:没有为一个或多个必需参数给出值

    下面是我的更新查询 它工作正常 但是当我添加时int DrId在参数字段 最后 检查条件条件 在此之后它向我显示以下错误 No value given for one or more required parameters 错误在哪里 因为
  • Node.js 在 openshift 中的部署

    我试图将 Node js 应用程序部署到 openshift 如此链接所示here http myapp jeewan rhcloud com 我理解这段代码 var http require http var server http cr
  • Sqlalchemy 如果表不存在

    我编写了一个模块 用于创建一个空数据库文件 def create database engine create engine sqlite myexample db echo True metadata MetaData engine me
  • 使用 RxJava 的状态机?

    我正在尝试全力以赴地使用 RxJava 并解决我遇到的这个问题 但它似乎非常不适合它 因为 RxJava 似乎不想处理任何类型的状态 而只是传递事件并改变它们来处理它们 我尝试用 RxJava 模拟的基本状态机行为是这样的 在应用程序启动事
  • 无法使用nodemailer发送html文本

    我无法使用 nodemailer 在邮件中发送 html 文本 exports send function req res console log req query var mailOptions to req query email s
  • 检查服务器上是否存在文件

    我正在尝试检查服务器上是否存在 ASP NET 网页后面带有 C 代码的文件 我知道该文件确实存在 因为我事先用一段代码将其放在服务器上 任何人都可以看到为什么找不到该文件 这是代码 wordDocName specifications C
  • Google Contacts API asp.net 设置和授权令牌

    是否有任何好的示例展示如何填写应用程序设置来创建请求设置 这是代码google https developers google com google apps contacts v3 using Google Contacts using
  • Python 中是否缓存了常量计算?

    假设我在 Python 中有一个函数 它使用一个常量计算的浮点值 如 1 3 def div by 3 x return x 1 3 如果我重复调用该函数 是否会自动缓存 1 3 的值以提高效率 或者我必须手动执行以下操作 def div
  • 创建主从表和对话框,如何重用相同的对话框来创建和编辑

    我正在尝试创建一个对话框 该对话框将用于创建对象和更新对象 因此 如果我碰巧单击 新建 按钮 我将看到一个包含要填充的空字段的对话框 或者如果我单击某个条目的编辑按钮 该条目的数据将显示在对话框中进行更新 按照 primefaces 展示版
  • 如何定义向量结束以便它不会无休止地继续下去?

    目前我有一个文本文件 其中包含与不同音乐剧艺术家有关的信息 David Byrne 1 Talking Heads Lead Vocals Chris Frantz 1 Talking Heads Drummer Tina Weymouth
  • 大多数现代系统中堆栈增长的方向是什么?

    我正在准备一些 C 语言培训材料 我希望我的示例适合典型的堆栈模型 Linux Windows Mac OSX PPC 和 x86 Solaris 和最新的 Unix 中的 C 堆栈朝什么方向发展 堆栈增长通常并不取决于操作系统本身 而是取
  • 全局执行上下文是否可以从执行堆栈中弹出?

    当JS代码开始运行时 全局执行上下文被创建并位于执行堆栈的底部 以 容纳 全局变量对象和 this 如果整个JS代码运行完后执行栈为空 并且没有全局执行上下文 我们如何仍然能够访问全局变量 例如 我正在运行一个带有 JS 代码的 html
  • 一个类可以扩展一个类并实现一个接口吗

    PHP 中的一个类可以同时扩展一个接口和另一个类吗 基本上我想这样做 interface databaseInterface public function query q public function escape s more met
  • 将 log4j 1.x 和 log4j 2 与依赖于 log4j 1.x 的第三方库混合

    我正在维护一个使用 log4j 1 x 和大型代码库的 Maven 项目 log4j 1 x不仅在现有代码中使用 项目所依赖的一些第三方库也使用它 我现在想开始使用 log4j 2 但我想知道是否值得这么麻烦 我知道可以将两者混合使用 参见