使用Log4j2异步日志记录时如何处理日志记录中的异常?

时间:2015-04-01 04:27:21

标签: java logging exception-handling log4j2

在我的应用程序中,我在异步模式下使用Log4j2(使用Disruptor的异步记录器),有人可以告诉我如何处理日志记录过程中发生的异常。日志记录对我的应用程序非常关键,我不想错过单个日志语句。如果日志记录出现问题,则需要立即收到警报。

根据Apache Log4j page,建议使用ExceptionHandler,但我找不到有关如何使用它的帮助主题。

  

错误处理。如果在日志记录过程中出现问题并且出现问题   抛出异常,对异步记录器来说不太容易   appender向应用程序发出此问题的信号。这可以部分地   通过配置ExceptionHandler来缓解,但这可能仍然没有   涵盖所有案例。因此,如果日志记录是您业务的一部分   逻辑,例如,如果您使用Log4j作为审计日志记录   框架,我们建议同步记录那些审计   消息。 (请注意,您仍然可以将它们组合使用并使用异步   除了同步日志记录之外,还记录调试/跟踪日志记录   审计线索。)

等待建议。

1 个答案:

答案 0 :(得分:1)

我建议首先尝试实现一个实现ExceptionHandler接口的简单类,并确认在出现问题时调用它。确认后,您可以继续实施自定义回退机制。

其次,可能难以开发强大的回退:如果log4j失败的原因是磁盘已满或已损坏,则您的回退可能无法写入磁盘。同样,您可能无法建立网络连接......我建议您的备用数据包含多个选项,以增加其中一个选项成功的可能性。

硬件价格便宜,因此请考虑为您的备用机制添加单独的网卡或单独的硬盘。如果使用了回退机制,请不要忘记发送通知,以便解决原始问题。

根据您的关键任务的不同,您可能希望调查提供高可用性的供应商产品 - 这通常不仅包括记录,还不确定您的需求是什么。