在我的应用程序中,我在异步模式下使用Log4j2
(使用Disruptor
的异步记录器),有人可以告诉我如何处理日志记录过程中发生的异常。日志记录对我的应用程序非常关键,我不想错过单个日志语句。如果日志记录出现问题,则需要立即收到警报。
根据Apache Log4j page,建议使用ExceptionHandler
,但我找不到有关如何使用它的帮助主题。
错误处理。如果在日志记录过程中出现问题并且出现问题 抛出异常,对异步记录器来说不太容易 appender向应用程序发出此问题的信号。这可以部分地 通过配置
ExceptionHandler
来缓解,但这可能仍然没有 涵盖所有案例。因此,如果日志记录是您业务的一部分 逻辑,例如,如果您使用Log4j作为审计日志记录 框架,我们建议同步记录那些审计 消息。 (请注意,您仍然可以将它们组合使用并使用异步 除了同步日志记录之外,还记录调试/跟踪日志记录 审计线索。)
等待建议。
答案 0 :(得分:1)
我建议首先尝试实现一个实现ExceptionHandler接口的简单类,并确认在出现问题时调用它。确认后,您可以继续实施自定义回退机制。
其次,可能难以开发强大的回退:如果log4j失败的原因是磁盘已满或已损坏,则您的回退可能无法写入磁盘。同样,您可能无法建立网络连接......我建议您的备用数据包含多个选项,以增加其中一个选项成功的可能性。
硬件价格便宜,因此请考虑为您的备用机制添加单独的网卡或单独的硬盘。如果使用了回退机制,请不要忘记发送通知,以便解决原始问题。
根据您的关键任务的不同,您可能希望调查提供高可用性的供应商产品 - 这通常不仅包括记录,还不确定您的需求是什么。