2009-02-25 95 views
1

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

+0

我使用的.Net,如果是相关的,但我不知道这是真的。 – darasd 2009-02-25 11:13:51

回答

1

一般来说,我输出到stderr在这种情况下,尽可能多的信息越好,在日志代码往往都错误/异常,原始日志/错误/异常。这样有可能再现问题或理解它。

如果再写入到stderr失败是放弃的时候 - 无论是忽略它,完全终止应用程序。

1

为什么不使用log4j/log4net/log4php/log4 *等现有日志记录机制?这些工具可能会将这些细节整理出来。

作为一个侧面说明,如果你运行你的代码中的容器内(比如:Tomcat)的,即使你抛出的异常处理程序中的异常,容器会抓住它,并显示它。就像Douglas Leeder说的那样,你可以捕获处理程序中的所有异常并将其传递给syserr。

+0

+1不要重新发明车轮。 – 2009-02-25 11:10:19

+0

是的,但是log4net轮有比我们需要更多的花里胡哨的附加。在我的时间里我写了很多错误记录器,而且他们总是很简单,并且按照他们的要求做。这并不困难。 – darasd 2009-02-25 11:14:26

0

这取决于日志记录是为了什么,如果它的调试日志记录,我会吞下异常,并继续,因为我从来不希望应用程序在生产中会由于调试工具,在另一方面,如果我登录到银行应用程序的审计日志我猜如果应用程序在没有审计的情况下继续工作,客户将会感到不安。

+0

我是错误日志记录。 – darasd 2009-03-02 15:32:37

0

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

审计服务然后可以被实现为状态机,可消耗和基于在它的配置定义的标准记录的消息。通用异常处理程序还可以使用审计服务来支持企业SOA中出现的问题的集中视图 - 以支持基于异常的监视。在该解决方案的任何应 - 不发生条件仪器发送异常消息给exception handler.