【发布时间】:2010-11-10 22:09:34
【问题描述】:
是否有一种简单的方法可以记录 ASP.NET 应用程序中的所有异常?我已经通过 Application_OnError 事件记录未处理的异常,但即使在页面级别处理异常,我也想执行记录。
非常感谢。
【问题讨论】:
-
您的意思是通过捕获它,还是使用 Page_Error 或其他方式来处理它?请更具体。
标签: asp.net exception exception-handling
是否有一种简单的方法可以记录 ASP.NET 应用程序中的所有异常?我已经通过 Application_OnError 事件记录未处理的异常,但即使在页面级别处理异常,我也想执行记录。
非常感谢。
【问题讨论】:
标签: asp.net exception exception-handling
您可以使用Elmah 记录您的异常。它非常易于使用,并提供了有关问题的良好信息。
【讨论】:
假设您只是抛出和捕获自己的异常类型(派生自 System.Exception ofc),您可以在其构造函数中根据需要创建基本异常日志。
【讨论】:
我同意 Collin 的观点,即您应该在捕获的任何地方记录(并且不要重新抛出)。
但是,如果您需要在没有太多代码修改的情况下记录每个异常,则处理AppDomain.FirstChanceException Event,您将获得所有异常(也许这甚至太多了:p,但它可以帮助您清理代码)。
【讨论】:
在 catch 块中调用您的日志记录组件以获取处理的异常。
【讨论】:
ASP.NET 运行状况监控以一种优雅且相当自动化的方式执行此操作(无需手动捕获异常):
当您单击第一个链接时,有一个示例说明如何启用和配置 ASP.NET 健康监控。您需要在 web.config 文件中进行配置。
要登录到数据库,您可以使用 ASP.NET SQL Server 注册工具创建相应的表:ASP.NET SQL Server Registration Tool (Aspnet_regsql.exe)
我真的很喜欢。对于手动记录,patterns & practices Enterprise Library's Logging Application Block 可能适合您,但这有点离题。
马蒂亚斯
【讨论】:
我认为无论如何都不会自动记录处理的异常。如果您已经在为未处理的异常进行 Application_OnError 日志记录,恐怕 Colin 是正确的,您将不得不在 catch 块中调用您的日志记录组件来记录您想要记录的已处理异常。
【讨论】:
【讨论】: