繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM