从 log4j v1 迁移到 log4j v2

问题描述 投票:0回答:2

我想提前指出,我不是 JAVA 开发人员(我是前端开发人员),这就是我开始这个查询的原因。 我们客户的Java应用程序是用J2SE 1.4.2编译的,应用程序使用log4j 1.2.8,客户想切换到log4j v2,在文档中我发现log4j v2从版本6开始使用java,更准确地说

Log4j 2.3.2(适用于 Java 6)、2.12.4(适用于 Java 7)或 2.17.1(适用于 Java 8 及更高版本)

如果我们切换到 Log4j 2.3.2,我们是否能够将应用程序编译为 J2SE 1.4 或 1.6?我们无法将应用程序升级到高于 1.6 的版本。

我还了解到您可以使用桥进行迁移,但在这里我找不到应用程序编译的版本。 迁移.html

感谢您的回复

java logging log4j
2个回答
1
投票

使用 log4j 2.3.2 无法将应用程序编译为 J2SE 1.4 或 1.6,首先是关于您的实际代码和依赖项。我找不到关于在 Java 1.4 中使用 log4j 2.3 的可能性的参考,但我很确定你不能,所以迁移到 Java 1.6 似乎是强制性的。

当 Java 发布一个主要版本时,它总是会带来一些重大更改,您必须找到它们并在代码中修复,这是最简单的部分。困难的部分是确保当前的依赖项能够与目标 Java 版本正常工作,如果不能,则找到等效项,这将需要一些集成工作。

客户选择背后的原因尚不清楚,但考虑到代码的年代久远,这种特殊的干预在我看来是不合适的。


0
投票

在 Java 项目中,需要考虑多个版本号:

  • 编译时环境(JDK)的版本,
  • 运行环境(JVM/JRE)的版本,
  • 生成的字节码的版本:这设置了编译时和运行时环境的最低版本。

如果您的客户切换到

log4j-1.2-api
版本2.22.1,他:

  • 需要 JDK 8 或更高版本来编译此应用程序,
  • 他仍然可以将应用程序编译成 1.4 字节码(但为什么?),
  • 需要 JVM/JRE 8 或更高版本才能运行应用程序。

我严重怀疑您的客户正在使用早于 JRE 8 的任何版本来运行其应用程序:Java 7 的延长支持期已于两年前结束,使用 JRE 7 或更早版本会产生严重的安全隐患。

备注:Log4j 1.x 有两个部分:一个用于发出日志语句的 API 和一个将这些语句传递到适当文件的日志记录后端。您的客户完全有可能没有使用 Log4j 1.x 作为日志记录 API(例如,他使用了 Apache Commons Logging)。如果是这种情况,他甚至不需要重新编译应用程序,他只需要添加

log4j-core
,一个配置文件和适当的桥作为运行时依赖项

© www.soinside.com 2019 - 2024. All rights reserved.