在我的应用程序中,我在异步模式下使用Log4j2 (异步记录器使用Disruptor),请告诉我如何处理日志记录过程中发生的异常。日志记录对于我的应用程序非常重要,我不想错过一个日志语句。如果日志记录出了问题,就需要立即报警。
根据Apache的Log4j页面,建议使用ExceptionHandler,但是我找不到关于如何使用它的帮助主题。
错误处理。如果在日志记录过程中发生问题,并引发异常,异步记录器或附录程序就不太容易将此问题通知应用程序。这可以部分地通过配置
ExceptionHandler来缓解,但这仍然不能涵盖所有的情况。因此,如果日志记录是业务逻辑的一部分,例如,如果您使用Log4j作为审计日志框架,我们建议同步记录这些审计消息。(请注意,除了审计跟踪的同步日志记录之外,还可以组合它们并使用异步日志记录进行调试/跟踪日志记录。)
等待建议。
发布于 2015-04-03 05:11:22
我建议首先尝试实现一个实现ExceptionHandler接口的简单类,并确认它在出现问题时被调用。一旦确认了这一点,您就可以继续执行自定义回退机制。
其次,可能很难开发健壮的回退:如果log4j失败的原因是磁盘已满或损坏,则回退可能无法写入磁盘。类似地,您可能无法建立网络连接..。我建议您的后备方案包含多个选项,以增加其中一个选项成功的可能性。
硬件很便宜,所以考虑为备份机制添加一个单独的网卡或一个单独的硬盘。如果使用回退机制,请不要忘记发送通知,这样您就可以解决原来的问题。
这取决于任务的关键程度--您可能想要调查那些提供高可用性的供应商产品--这通常涵盖的不仅仅是日志,也不确定您在这里需要什么。
https://stackoverflow.com/questions/29382864
复制相似问题