0

可能重复:
使用 NLog 记录异常时如何获取堆栈跟踪?

抛出异常以从日志中获得清晰图片的最佳做法是什么?

对于日志记录,我使用的是 NLog。

下面是简单的代码:

catch (Exception ex)
{
    logger.Fatal(ex.Message);
    throw new Exception(ex.Message);
}

它没有给我一个很好的日志记录消息。我需要诸如函数、错误代码行之类的信息。

4

2 回答 2

5

出于登录目的,您要分析的不仅仅是异常对象的消息字段。

链接将为您提供有关您可以从通用异常对象中获得什么的信息

throw ex此外,和之间也有区别throw。此外,当您抛出新创建的异常时。

  • 在您的情况下(throw new Exception(ex.Message)),您正在抛出通用异常,它没有说明异常的性质并具有新的堆栈跟踪,从这行代码构建。
  • throw ex- 重新抛出原始异常,但将堆栈跟踪剪切到当前的 catch 子句

  • throw- 使用原始堆栈跟踪重新抛出原始异常,允许您记录等异常并让它更进一步

因此,根据您要实现的目标,这三种情况之一将满足您的需求。

于 2012-10-03T01:36:46.143 回答
0

您可以从http://msdn.microsoft.com/en-us/library/system.exception_properties.aspx阅读更多关于异常抛出的最佳实践

于 2012-10-03T07:48:59.167 回答