当前位置: 首页 > 知识库问答 >
问题:

项目使用Log4j2,但依赖项使用Log4j

王磊
2023-03-14

我们有一个使用Spring Boot编写的新项目,其中我们使用Log4j2进行日志记录。

问题是我们需要使用一个遗留库,我们拥有它,但我们不能改变;其他几个系统使用它,我们不能通过改变所有这些系统来扩大我们的范围。

当我们的项目运行时,它使用Log4j2记录的很好,但是当我们调用遗留库时,它会调用Log4j,从而抛出异常。

在我们使用log4j2的新应用程序中,有没有办法处理旧的log4j调用?

我们的遗留JAR在内部库文件夹中包含几个JAR,包括:

  • log4j-1.2。6.jar

我们的项目是Spring Boot项目,我们包含了依赖项:

  • 组织。springframework。启动:spring-boot-starter-log4j2

我在projects类路径上看到的log4j jar是:

  • spring-boot-starter-log4j2--1.5。9.释放。罐子

共有1个答案

龙星渊
2023-03-14

您是否尝试过log4j-1.2-api适配器?将其与log4j apilog4j核心依赖项一起使用。适配器允许应用程序使用log4j1.2api,但会将这些调用路由到log4j2实现。请参阅常见问题解答中的which jars问题。

如果应用程序使用内部Log4j 1.2类,这可能不起作用,但对于普通日志记录来说,这是Log4j-1.2的替代品。一个罐子。

请注意,传统的log4j-1.2。应将x jar从类路径中删除,以使其正常工作。

更新:如果遗留jar包含log4j1.2。x jar,这会导致log4j1.2。要将x jar添加到类路径,结果未定义。

我相信您别无选择,只能创建一个没有log4j1.2的定制版本。一个罐子。您组织中的其他系统可以继续使用原始的遗留jar和嵌入式Log4j 1.2。直到他们还想迁移到Log4j2。

您的旧jar的新版本(没有嵌入Log4j 1.2.x jar)可能成为您组织中所有其他系统迁移到Log4j2的途径。

 类似资料:
  • 由于butterknife依赖的错误,我无法构建android项目。 错误 任务': app: javaPreCompileDebug'执行失败。 无法解析配置的所有文件: app: dedegAnnotationProcessorClasspath。转换butterknife-compiler-8.6.0.jar失败(com.jakewharton:巴特切夫-编译器: 8.6.0)以匹配属性{a

  • 问题内容: 首先,我要说我是Ant的新手。就像之前一样,我只是在两天前才开始学习它以完成此任务。 我想要做的是创建一个“ master”蚂蚁脚本,该脚本调用其他几个蚂蚁脚本。例如: 现在,我拥有用于​​A,B和C的所有单独版本。通过这个,我的意思是我可以从这些文件夹中的任何一个运行“ ant”,它将构建项目并生成一个jar文件。如果以这种方式构建A,B和C,则我有3个jar文件。然后,我可以将它们

  • 我有一个Maven项目,我想使用log4j2和slf4j。所以我添加了这个依赖项: 就我所知,它似乎起作用了。但我的问题是关于log4j-slf4j-impl的可传递依赖关系。 为什么IntelliJ显示log4j-core引入了log4j-api,但由于是重复的,所以忽略了它(我相信下面的截图是这么说的)?我该如何预防呢?

  • 问题内容: 在我的Maven项目中,有一个模块(核心),该类具有一些资源。在模块中运行类时,它可以获取自己的资源。一切正常。 当依赖于核心的另一个模块尝试运行该类时,东西就会中断。Java在其中寻找资源的文件夹是此模块,而不是核心模块。因此,该类失败了。 简而言之:如何访问依赖项的资源? 我已经尝试通过在Core的JAR Manifest中进行声明来做到这一点。但是,当列出可用的资源时(JSHoo

  • 我有一个包含多个子项目的根项目。最初,我们将这些项目作为独立的Maven项目保留,但我意识到Gradle更适合我使用。但是对于其中一个子项目,我们宁可不将其转换为Gradle项目,而将其保留为Maven项目。 root/build.gradle root/common.gradle root/api/pom.xml