当前位置: 首页 > 知识库问答 >
问题:

尝试使用SMTP Appender时出现Log4J2工厂错误

乐正远航
2023-03-14

下午好,

当我尝试使用SMTP Appender时,控制台中出现了一个奇怪的错误。加载XML文件时会出现此错误,因为除了标准输出之外,没有通过任何输出流记录该文件。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:18812错误:无法在类org中调用工厂方法。阿帕奇。登录中。log4j。果心阿佩德。元素SMTP的SmtpAppender。JAVA朗。反思。在太阳上调用targetException。反映NativeMethodAccessorImpl。在sun上调用0(本机方法)。反映NativeMethodAccessorImpl。在sun上调用(未知源)。反映DelegatingMethodAccessorImpl。在java上调用(未知源)。朗。反思。方法在组织中调用(未知源)。阿帕奇。登录中。log4j。果心配置。插件。util。插件生成器。在org上构建(PluginBuilder.java:137)。阿帕奇。登录中。log4j。果心配置。抽象配置。在org上创建pluginobject(AbstractConfiguration.java:766)。阿帕奇。登录中。log4j。果心配置。抽象配置。在org上创建配置(AbstractConfiguration.java:706)。阿帕奇。登录中。log4j。果心配置。抽象配置。在org上创建配置(AbstractConfiguration.java:698)。阿帕奇。登录中。log4j。果心配置。抽象配置。org上的doConfigure(AbstractConfiguration.java:358)。阿帕奇。登录中。log4j。果心配置。抽象配置。在org上启动(AbstractConfiguration.java:161)。阿帕奇。登录中。log4j。果心LoggerContext。org上的setConfiguration(LoggerContext.java:361)。阿帕奇。登录中。log4j。果心LoggerContext。在org上重新配置(LoggerContext.java:426)。阿帕奇。登录中。log4j。果心LoggerContext。在org上重新配置(LoggerContext.java:442)。阿帕奇。登录中。log4j。果心LoggerContext。在org上启动(LoggerContext.java:138)。阿帕奇。登录中。log4j。果心impl。Log4jContextFactory。位于org的getContext(Log4jContextFactory.java:147)。阿帕奇。登录中。log4j。果心impl。Log4jContextFactory。位于org的getContext(Log4jContextFactory.java:41)。阿帕奇。登录中。log4j。日志管理器。getContext(LogManager.java:175)位于org。阿帕奇。登录中。log4j。日志管理器。getLogger(LogManager.java:426)at(我们的日志接口类,它基本上只返回Apache日志管理器传递的日志)at(全局变量定义文件,第一个使用getLogger的方法)at(我们的软件的主要方法,其中加载了全局变量)由:java引起。lang.NoSuchMethodError:javax。邮政一场setProtocolForAddress(Ljava/lang/String;Ljava/lang/String;)V在org。阿帕奇。登录中。log4j。果心网SmtpManager$SMTPManagerFactory。createManager(SmtpManager.java:325)位于org。阿帕奇。登录中。log4j。果心网SmtpManager$SMTPManagerFactory。createManager(SmtpManager.java:299)位于org。阿帕奇。登录中。log4j。果心阿佩德。抽象经理。getManager(AbstractManager.java:71)位于org。阿帕奇。登录中。log4j。果心网SmtpManager。位于org的getSMTPManager(SmtpManager.java:124)。阿帕奇。登录中。log4j。果心阿佩德。SmtpAppender。createAppender(SmtpAppender.java:142)。。。还有21个

2015-05-19 19:08:18814为附加器中的SMTP返回了错误Null对象。2015-05-19 19:08:18819错误无法找到记录器fatalerror的appender Mailer

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

共有2个答案

公孙琛
2023-03-14

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

文鸣
2023-03-14

这是stacktrace中的重要一行:

原因:java。lang.NoSuchMethodError:javax。邮政一场setProtocolForAddress(Ljava/lang/String;Ljava/lang/String;)五、

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

 类似资料:
  • ...在Xcode控制台,我得到 它演示了建立了连接并成功找到了服务器,但其他问题出现了。会很感激你的帮助。

  • 问题内容: 我正在尝试使用ESAPI.jar为我的Web应用程序提供安全性。基本上我刚刚开始使用ESAPI.jar。但是问题是我什至无法使用ESAPI运行简单的程序。小代码段是: 我收到此错误: 我尝试将3个ESAPI属性文件复制到我的源文件夹中,并在构建路径上进行配置,但是仍然没有成功。我尝试了许多排列和组合都无济于事。 请指导我。 属性文件的内容为: 问题答案: ESAPI.propertie

  • 我有一个数据帧,我试图在条形图中绘制,但我面临一个奇怪的错误。 print语句给出: 然后是绘图代码:给出以下错误: ---------------------------------------------------------------------------KeyError回溯(最近一次调用上次)~/opt/anaconda3/lib/python3。8/现场包/熊猫/核心/索引/基础。

  • 我正在尝试运行以下Sqoop命令: 然而,我得到了这个错误: 17/02/04 00:04:53 警告安全。用户组信息: 特权行动例外作为:avinash (身份验证:简单) 原因:java.io.文件不发现异常: 文件不存在: hdfs://localhost:9000/home/avinash/sqoop-1.4.6.bin__hadoop-2.0.4-alpha/lib/slf4j-api-

  • 我试图使tableview可点击,它将返回被点击的单元格中的文本。当我试图在NetBeans中编译时,我收到了两个错误。所有代码都摘自tableview官方教程“示例12-11:单元格编辑的替代解决方案”&摘自StackOverflow.com的答案。以下是错误: 类型参数MouseEvent不在类型变量T cell.addeventFilter(MouseEvent.mouse_clicked,

  • 我有一个类(A),它包含另一个类(B)的自动生成依赖项,而另一个类(B)又具有另一个类C的自动生成依赖项。 我正在尝试使用Mockito编写测试用例,并对依赖项使用spy注释。我在监视C类时遇到空指针错误。 如何从A类执行此单元测试?