错误日志记录类中最好的异常处理策略是什么?

时间:2009-02-25 10:47:35

标签: .net exception-handling error-handling error-logging

我正在编写一组错误记录类,它将记录到文件,事件日志等。在这些类中应该执行哪些异常处理?例如,假设我有一个LogError方法,它从异常处理程序调用,并写入文件。什么是最好的事情,如果发生错误?显然,我应该尽可能地使这些方法失效,但问题总会发生。

4 个答案:

答案 0 :(得分:1)

通常我会在这种情况下向stderr输出尽可能多的信息,通常是日志代码中的错误/异常,以及原始日志/错误/异常。这样就有机会重现问题或理解它。

如果写入stderr失败,那么就该放弃 - 要么忽略它,要么完全终止应用程序。

答案 1 :(得分:1)

为什么不使用现有的日志记录机制,例如log4j / log4net / log4php / log4 *?这些工具可能已经整理了这些细节。

作为旁注,如果在容器(例如:tomcat)中运行代码,即使在异常处理程序中抛出异常,容器也会捕获并显示它。就像Douglas Leeder所说,你可以捕获处理程序中的所有异常并将其抛给syserr。

答案 2 :(得分:0)

这取决于日志记录的内容,如果它是调试日志记录我将吞下异常并继续,因为我从不希望应用程序因生产调试辅助而失败,另一方面如果我正在登录审计银行应用程序的日志我想如果应用程序在没有审计的情况下继续工作,客户将会感到不安。

答案 3 :(得分:0)

您可以将审核和异常处理实现为服务。应用程序级审计日志记录需要有关每个业务事务的状态数据监视业务或事务上下文中的应用程序的能力要求服务中的监视接口发送消息,详细说明特定于服务调用的事务状态。这要求每个服务在业务事务的关键步骤发送状态消息。然后,您可以构建实时查看器以将状态消息(基于消息的语义 - 例如事务ID)与复合应用程序内的服务相关联。这为SLA管理,故障跟踪和问题确定提供了业务事务的端到端视图。

然后,可以将审计服务实现为可以根据其配置中定义的条件使用和记录消息的状态机。通用异常处理程序还可以使用审计服务来支持企业SOA中出现的问题的集中视图 - 以支持基于异常的监视。解决方案中任何不应发生的情况都会被检测为向exception handler.

发送异常消息