【问题标题】:ASP.NET Exception Handling/LoggingASP.NET 异常处理/日志记录
【发布时间】:2010-11-10 22:09:34
【问题描述】:

是否有一种简单的方法可以记录 ASP.NET 应用程序中的所有异常?我已经通过 Application_OnError 事件记录未处理的异常,但即使在页面级别处理异常,我也想执行记录。

非常感谢。

【问题讨论】:

  • 您的意思是通过捕获它,还是使用 Page_Error 或其他方式来处理它?请更具体。

标签: asp.net exception exception-handling


【解决方案1】:

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

【讨论】:

  • "您无需更改任何一行代码即可获得以下功能:* 记录几乎所有未处理的异常。"
  • +20 推荐 Elmah。在开发恕我直言时,它已成为标准。如果我记得 SO 也使用它。
【解决方案2】:

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

【讨论】:

  • 这不太可能,因为标准 .Net 组件会抛出许多异常 - 重新抛出这些异常会非常浪费
  • 嗯,有趣的角度。我必须提供自己的基本异常类型,然后自己修改每个 catch 语句,但至少我所有的日志记录功能都在一个地方。
  • @ck - 您是指由服务器控件引发的异常,例如,下拉列表被设置为无效的 selectedindex?
  • 将此作为最可接受的解决方案,因为唯一的其他解决方案是“无法完成”。谢谢米。
  • 在现实生活中的应用程序中,您不能只捕获自己的异常类型。您可以做的是在上层(即 UI)中捕获它们。这将要求您在较低层将每个捕获的异常包装在您自己的异常类型中并重新抛出它们。但是,这仍然不能涵盖所有场景。
【解决方案3】:

我同意 Collin 的观点,即您应该在捕获的任何地方记录(并且不要重新抛出)。

但是,如果您需要在没有太多代码修改的情况下记录每个异常,则处理AppDomain.FirstChanceException Event,您将获得所有异常(也许这甚至太多了:p,但它可以帮助您清理代码)。

【讨论】:

    【解决方案4】:

    在 catch 块中调用您的日志记录组件以获取处理的异常。

    【讨论】:

    • 嗯,是的。但我想知道是否没有更简单的方法可以做到这一点?不单独修改每个 catch 语句?
    • 如果不处理错误,为什么会有 catch 语句?如果你处理了错误,那么就没有必要用它来阻塞你的日志了吗?!
    • 我确实为用户处理错误,但出于调试目的,我需要比显示给用户的信息更多的信息。
    【解决方案5】:

    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 可能适合您,但这有点离题。

    马蒂亚斯

    【讨论】:

      【解决方案6】:

      我认为无论如何都不会自动记录处理的异常。如果您已经在为未处理的异常进行 Application_OnError 日志记录,恐怕 Colin 是正确的,您将不得不在 catch 块中调用您的日志记录组件来记录您想要记录的已处理异常。

      【讨论】:

        【解决方案7】:

        【讨论】:

        • 虽然理论上这可以回答这个问题,it would be preferable 在这里包含答案的基本部分,并提供链接以供参考。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-02-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-20
        • 2020-10-01
        • 2010-09-25
        相关资源
        最近更新 更多