0

下午好,

当我尝试使用 SMTP Appender 时,我在控制台中收到一个奇怪的错误。加载 XML 文件时似乎会发生该错误,因为它没有通过除 stdout 之外的任何输出流进行记录。appender 的内容如下(我已经确认错误在这个 XML 块中)。我已经删除了我们的服务器信息。

<SMTP name="Mailer">
    <Subject>[ERROR] (software name) on ${hostName} has thrown a fatal error</Subject>
    <To>(a valid email in the form of a@a.com)</To>
    <From>(a valid email in the form of a@a.com)</From>
    <SMTPHost>(The Internal IP address of a server in the form of 192.168.0.1)</SMTPHost>
    <SMTPPort>587</SMTPPort>
    <BufferSize>512</BufferSize>
</SMTP>

无论是否在记录器中引用它,在运行程序并从日志管理器运行 getLogger 时,我都会立即收到以下错误。我已经删除了几个文件名,并将它们替换为当时文件正在做什么的粗略描述。

2015-05-19 19:08:18,812 错误无法为元素 SMTP 调用类 org.apache.logging.log4j.core.appender.SmtpAppender 中的工厂方法。java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect。 Method.invoke(Unknown Source) at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:137) at org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject (AbstractConfiguration.java:766) 在 org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:706) 在 org.apache.logging.log4j.core.config。

2015-05-19 19:08:18,814 错误为附加程序中的 SMTP 返回空对象。2015-05-19 19:08:18,819 错误无法找到记录器致命错误的附加程序邮件程序

配置的细节是正确的(我知道它是一个有效的 IP 等)——它们在 log4j 1 中工作。错误日志几乎没有告诉我有关错误的任何信息,所以我希望有人以前听说过这个。感谢大家!

4

2 回答 2

1

这是堆栈跟踪中的重要行:

引起:java.lang.NoSuchMethodError: javax.mail.Session.setProtocolForAddress(Ljava/lang/String;Ljava/lang/String;)V

setProtocolForAddress方法自 1.4 版以来一直是 JavaMail 的一部分,因此这向我表明您正在使用该 JAR 的旧版本。如果是,请尝试升级到更高版本。

于 2015-05-19T20:41:25.880 回答
0

请注意,log4j2 有很多查找,而不仅仅是系统属性。因此,您需要转换${hostName}${sys:hostName},如果您正在使用 IP 地址查找,这可能是问题的原因。(尝试对所有查找值进行硬编码以排除这种可能性。)

于 2015-05-22T10:22:27.443 回答