我应该如何在ASP.NET中记录异常?

时间:2010-01-21 05:53:00

标签: c# .net asp.net logging exception

我应该如何记录异常?我之前从未尝试过登录.NET。也不要尝试将异常转储到txt(或二进制)文件。我不需要文本文件,只是一种用文件和行#查看日志的方法。

-edit-使用asp.net

13 个答案:

答案 0 :(得分:16)

如果你使用的是ASP.NET,那么

ELMAH特别好。我最喜欢的ELMAH功能之一是不必构建UI来查看记录的异常; ELMAH提供了一个报告异常的处理程序。但是,我从来没有用它来记录异常以外的任何东西。

log4net和Microsoft's EntLib是我想到的其他一些想法。如果你真正需要的只是异常记录,它们提供的功能远远超过你可能需要的功能。

此外,您可以考虑performance counters,如果您真正想要做的是衡量您的申请。同样,使用性能计数器的好处是,在发布数据之后,您不必担心构建UI以查看/查询数据。

答案 1 :(得分:7)

log4net是一个非常漂亮和标准的系统。非常值得学习,您可以登录各种格式(或自定义)。 (编辑:但是,据我所知,Silverlight尚不支持,如果您感兴趣,那么您可能需要在那里实现自己的系统。)

答案 2 :(得分:3)

要记录例外,请查看项目:ELMAH

对于其他类型的日志记录,您无法通过Log4Net

答案 3 :(得分:3)

NLog非常好。配置比log4net更容易......

答案 4 :(得分:3)

实际上,从ASP.NET 2.0开始,您实际上不必记录任何异常。 ASP.NET Health Monitoring为您完成此任务。默认情况下,它会将异常(作为警告)记录到应用程序事件日志中。

此过程可通过配置进行自定义。

请参阅ASP.NET Health Monitoring Overview

答案 5 :(得分:2)

企业库日志记录应用程序块是一种选择。它可能比您需要的更多(或更少),但它对我来说效果很好。

答案 6 :(得分:1)

Log4Net非常棒且学习快速。对于许多额外功能和可视化,有Exceptioneer

答案 7 :(得分:1)

不是一个直接的答案,但我们发现用我们自己的代码记录问题有用的一件事是创建一个基本异常类(继承自Exception)并使用Log4Net(或其他)自动记录异常详细信息派生的例外情况。

显然,这不会记录其他类型的异常(BCL,第三方),但它很有用。

关于记录异常的另一件事,如果你想要完整的堆栈跟踪,请使用Exception.ToString()而不仅仅是Exception.Message。

答案 8 :(得分:1)

虽然我们在这里插入各种日志框架,但请插入CuttingEdge.Logging。设置和与ASP.NET很好地集成很简单,但缺少像ELMAH这样的查看器。

答案 9 :(得分:0)

我同意那些提到ELMAH的人。

ELMAH唯一的错误是它无法记录在实际用户发起的请求之外发生的异常。因此,如果您使用计时器或者有大量代码运行在applicaiton_start类型事件中,则必须手动记录这些异常。 ELMAH最好的部分是它很容易设置,并附带一个UI,所以你可以实际查看日志(为什么没有其他记录器似乎带有UI是我的理解)。

Log4Net是一个更完整的日志记录解决方案,如果您想要进行诊断日志记录,信息日志记录或者想要记录“非错误”的内容,那么它尤其适用。更容易配置和使用企业库。

企业库的日志记录组件也很受欢迎,但EntLib也像货运列车那样轻巧而精巧,特别是如果您没有使用EntLib提供的其他功能。

答案 10 :(得分:0)

Link

  • log4net是非常好的选择。

答案 11 :(得分:0)

NLOG看起来不错..但它只是记录一般消息..不是例外..?或者是InfoException是什么?例如在调试模式下,您可能需要计算并记录循环迭代的次数......

还有其他人在http://logging.apache.org/log4net/download.html

上解压缩Log4Net下载时遇到了困难

答案 12 :(得分:-1)

看起来你对编程很陌生,最近试图找出更高级的主题。如果您只想查看异常的文件和行号,那么您当然不需要使用任何日志记录实用程序,如Log4net或Microsoft Enterprise Library。

现在开始,开始将你的代码放在try-catch块中,并处理catch块中的异常(如果有的话)。

try
{

}
catch(Exception ex)
{
   //handle exception
}

除此之外,您还可以找到堆栈跟踪,它可以让您准确了解编码失败的方法和行。

希望这有帮助。