【问题标题】:Log4j2 Error HandlingLog4j2 错误处理
【发布时间】:2025-12-19 02:25:07
【问题描述】:

由于我发现 log4j 1.2.x 存在一些性能问题,我尝试迁移到 log4j2。

现在我遇到了一个我找不到解决方案的问题。 我必须将用于 log4j 1.2.x 的配置文件重写为与 v2 兼容的配置文件。 当我到达一个名为“errorHandler”的附加程序内部的属性时,就会出现问题。

这是 errorHandler 在我的 log4j 1.2.x 上下文中出现的位置:

<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
    <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
    <param name="Target" value="System.out"/>
    <param name="Threshold" value="WARN"/>
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%d %-5p [%t] %c - %m%n"/>
    </layout>
</appender>

谁能告诉我,在 log4j2 for errorHandler 中哪个是类似的属性,如果存在的话? 或者,log4j2 中的另一个替代方案会给我完全相同的结果?

提前致谢。

【问题讨论】:

  • 您能找到解决方案吗?我也在寻找解决方案...在此先感谢!
  • 对不起。自从我研究这个问题以来已经很久了,我什至不记得实际的问题。祝你好运。

标签: java logging jboss log4j2 jboss-logging


【解决方案1】:

Log4j2 提供了一个FailoverAppender,如果主 appender 失败,它将调用辅助 appender。您可以拥有一个辅助附加程序列表,log4j 将尝试所有这些附加程序,直到一个成功。

请注意,在使用 FailoverAppender 时,您应该使用 ignoreExceptions=false 配置主要和辅助附加程序。

【讨论】:

  • 好的,我已经查看了这个 FailoverAppender 但不是很仔细,但如果你说这可能是我的问题的解决方案,我会再试一次,并且会更加耐心。谢谢。
  • @Remko Popma 我无法想象故障转移附加程序在这里能提供什么帮助,你能解释一下吗?
  • 因为故障转移附加程序只是在主附加程序失败时帮助调用辅助附加程序。假设我有主 appender 作为 appender1,辅助作为 appender2,我希望在 appender1 抛出时调用 appender2,但这我只需要发生一次,下次通过 appender1 对 appender2 的所有调用都应该变成 NOOP
  • @r_goyal 我对 FailoverAppender 设计不够熟悉,无法回答您的后续问题;你介意在 Log4j2 邮件列表上提出这个吗?