2009-07-15 119 views
6

有没有简单的方法来记录ASP.NET应用程序中的所有异常?我已经通过Application_OnError事件记录了未处理的异常,但即使在页面级别处理异常时,我也要执行日志记录。ASP.NET异常处理/日志记录

非常感谢。

+0

你的意思是抓住它,或使用Page_Error或其他东西?请更具体一些。 – RichardOD 2009-07-15 07:44:52

+0

通过捕捉来处理。 – staterium 2009-07-15 07:48:13

回答

5

假设您只是抛出并捕获自己的异常类型(从System.Exception ofc派生),您可以在构造函数中创建基本异常日志。

1

在catch块中调用处理异常的记录组件。

+0

嗯,是的。但我想知道是否没有更简单的方法来做到这一点?没有单独修改每个catch语句? – staterium 2009-07-15 07:35:54

+0

如果你不处理这个错误,为什么你有catch语句? 如果你处理错误,那么就没有必要用它堵塞你的日志? – 2009-07-15 07:41:11

+2

我确实为用户处理错误,但为了调试目的,我需要更多的信息而不是显示给用户的信息。 – staterium 2009-07-15 07:43:31

0

我不认为有自动记录处理的异常。如果你已经为未处理的异常做了Application_OnError日志记录,恐怕Colin是正确的,你将不得不在catch块中调用你想要登录的异常处理异常的日志记录组件。

9

您可以使用Elmah来记录您的例外。它非常易于使用,并提供有关该问题的良好信息。

1

ASP.NET健康监测做到这一点优雅而相当自动的方式(无需手动捕获异常):

当您单击第一个链接,有一个如何启用和配置ASP.NET Health Monitoring的例子。您需要在web.config文件中配置它。

用于登录到一个数据库,您可以使用ASP.NET SQL Server注册工具可以创建corresponsing表:ASP.NET SQL Server Registration Tool (Aspnet_regsql.exe)

我真的很喜欢它。对于手动日志记录来说,patterns & practices Enterprise Library's Logging Application Block可能适合你,但这有些偏离主题。

马蒂亚斯

3

我同意科林,你应该记录,无论你赶上(不重新抛出)。但是如果你需要记录每一个没有太多代码修改的异常,然后处理AppDomain.FirstChanceException Event,你会得到所有的异常(也许这太多了:p,但它可以帮助你清理代码)。