[英]How to handle exceptions in logging when use Log4j2 Async logging?
在我的应用程序中,我正在异步模式下使用Log4j2
(使用Disruptor
异步记录Disruptor
),能否有人告诉我如何处理记录过程中发生的异常。 日志记录对于我的应用程序非常重要,我不想错过任何一条日志语句。 如果日志记录出现问题,则需要立即发出警报。
根据Apache Log4j页面 ,建议使用ExceptionHandler
,但是我找不到有关如何使用它的帮助主题。
错误处理。 如果在记录过程中发生问题并且引发了异常,则异步记录器或附加器将问题发送给应用程序的可能性就较小。 通过配置
ExceptionHandler
可以部分缓解此问题,但这仍不能涵盖所有情况。 因此,如果日志记录是您的业务逻辑的一部分,例如,如果您将Log4j用作审核日志记录框架,则我们建议同步记录这些审核消息。 (请注意,除了同步日志记录用于审计跟踪之外,您仍然可以将它们组合在一起并使用异步日志记录进行调试/跟踪日志记录。)
等待建议。
我建议首先尝试实现一个实现ExceptionHandler接口的简单类,并确认在发生问题时调用该类。 确认后,您就可以继续实施自定义的后备机制。
其次,可能很难建立可靠的回退:如果log4j失败的原因是磁盘已满或已损坏,则回退可能无法写入磁盘。 同样,您可能无法建立网络连接...我建议您的后备合并了多个选项,以增加这些选项之一成功的可能性。
硬件价格便宜,因此请考虑为回退机制添加单独的网卡或单独的硬盘。 如果使用了回退机制,请不要忘记发送通知,这样您就可以解决原始问题。
根据任务的关键程度,您可能需要研究提供高可用性的供应商产品-这通常不仅仅包括日志记录,还不确定您的需求在这里。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.