代码之家  ›  专栏  ›  技术社区  ›  MattWeiler

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

  •  1
  • MattWeiler  · 技术社区  · 6 年前

    我们有一个新项目正在使用 弹簧防尘套 我们使用的 日志4J2 用于我们的日志记录。

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

    当我们的项目运行时,使用 日志4J2 ,但当我们调用遗留库时 Log4j 引发异常的调用。

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


    使现代化

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

    • 日志4J-1.2.6。罐子

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

    • 组织。springframework。防尘套:spring-boot-starter-log4j2

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

    • spring-boot-starter-log4j2--1.5.9。释放。罐子
    • log4j-slf4-impl-2.7。罐子
    • log4j-api-2.7。罐子
    • log4j-core-2.7。罐子
    1 回复  |  直到 6 年前
        1
  •  3
  •   Remko Popma    6 年前

    你试过 log4j-1.2-api 适配器?将此与 log4j-api log4j-core 依赖项。适配器允许应用程序使用Log4j 1.2 API,但会将这些调用路由到log4j2实现。请参见 which jars 常见问题解答中的问题。

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

    请注意,传统的log4j-1.2。x jar应该是 远离的 从类路径中执行此操作。


    更新:如果旧jar 包含

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

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