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

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

-edit-使用asp.net

如果你使用ASP.NET, ELMAH特别好。 我最喜欢的ELMAHfunction之一是不必构建UI来查看记录的exception; ELMAH提供了一个报告exception的处理程序。 但是,我从来没有用它来记录exception以外的任何东西。

log4net和微软的EntLib是我想到的其他一些想法。 如果你真正需要的只是exception日志记录,它们提供的function比你可能需要的function多得多。

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

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

要记录exception ,请查看项目: ELMAH

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

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

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

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

请参阅ASP.NET运行状况监视概述

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

Log4Net很棒,学习起来也很快。 对于许多额外的function和可视化,有Exceptioneer 。

这不是一个直接的答案,但我们发现用我们自己的代码记录问题有用的一件事是创建一个基本exception类(inheritance自Exception)并使用Log4Net(或其他)在所有派生中自动记录exception细节例外。

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

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

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

我同意那些提到ELMAH的人。

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

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

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

  • Trace和Debug类非常有用。

链接

  • log4net是非常好的选择。

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

还有其他人在http://logging.apache.org/log4net/download.html上解压缩Log4Net下载时遇到了困难

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

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

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

在exception情况下,您可以找到堆栈跟踪,它可以让您准确了解您编码的方法和行失败。

希望这可以帮助。