我们有一个新项目,我们正在使用 Spring Boot 编写,我们正在使用 Log4j2 进行日志记录。
问题是我们需要使用我们拥有的遗留库,但我们无法改变;其他几个系统使用它,我们不能通过改变所有系统来扩大我们的范围。
当我们的项目运行时,它使用 Log4j2 进行正常记录,但是当我们调用遗留库时,它会使 Log4j 调用抛出异常。
有没有办法在我们使用log4j2的新应用程序中处理旧的log4j调用?
我们的旧版JAR在内部lib文件夹中包含多个JAR,包括:
我们的项目是一个Spring Boot项目,我们已经包含了依赖项:
我在项目类路径中看到的log4j JARS是:
答案 0 :(得分:3)
您是否尝试过log4j-1.2-api
适配器?将此与log4j-api
和log4j-core
依赖项一起使用。适配器允许应用程序使用Log4j 1.2 API,但将这些调用路由到log4j2实现。请参阅常见问题解答中的which jars问题。
如果应用程序使用内部Log4j 1.2类,这可能不起作用,但对于普通日志记录,它是log4j-1.2.x jar的替代品。
请注意,旧版log4j-1.2.x jar应该从类路径 删除 才能生效。
更新:如果旧版jar 包含 Log4j 1.2.x jar,这会导致Log4j 1.2.x jar被添加到类路径中,结果是未定义的。
我相信你别无选择,只能在没有 Log4j 1.2.x jar的情况下创建这个遗留jar 的自定义版本。组织中的其他系统可以继续使用带有嵌入式Log4j 1.2.x jar的原始传统jar,直到他们还想迁移到Log4j2。
您的新版本的旧版jar(没有嵌入式Log4j 1.2.x jar)可能成为组织中所有其他系统迁移到Log4j2的途径。