Java 11 上的 Log4j2 SMTP Appender:javax.mail 或 jakarta.mail?

Log4j2 SMTP Appender on Java 11: javax.mail or jakarta.mail?

我正在使用 Java 11 (Corretto 11)、log4j 2.12.1 和 jakarta.mail 2.0.1。我的 log4j 配置使用 SMTP appender,但我没有收到任何电子邮件。我确实在文件中看到了日志语句(使用文件或控制台附加程序时)。而且,当使用与 Java 8、log4j 2.12.1 和 javax.mail 1.6.2 完全相同的 log4j 配置时,我确实收到了电子邮件。我不能同时使用 javax.mail 和 jakarta.mail,因为存在重叠的 class(例如 com.sun.mail.util.MimeUtil)。它 可以与 javax.mail 1.6.2.

一起使用

Java 11 + log4j2 + SMTP Appender 的建议是什么?如果我想使用 log4j,我是否坚持使用不再维护的旧 javax.mail 1.6.2?

这可能是 Eclipse 中的一个怪癖,但是当我从 log4j 2.12.1 查看 org.apache.logging.log4j.core.net.MimeMessageBuilder 的源代码时,导入显示 javax.mail.*,但是 MimeMessage 的 javadoc ] class 显示 jakarta.mail.internet.MimeMessage.

您可能知道,将 Java EE 从 Oracle 转移到 Eclipse Foundation 需要更改 javax.* 命名空间(在 Java EE 8/Jakarta EE 8 中) 到 jakarta.* 命名空间 (Jakarta EE 9)。

由于所有库都切换到 Jakarta EE 9 可能要经过很多年,并且考虑到必须对所有 Jakarta EE 9 技术同时完成切换这一事实,Jakarta EE 8 实现可能会在很长一段时间内得到更新。

由于 Log4j 是尚未迁移的库之一,因此请使用 jakarta.mail 工件版本 1.6.x 来自 com.sun.mail 组。如您所见,它仍然会得到更新(今天的最新版本:1.6.7)。