ASP.NET异常处理/日志记录

ASP.NET异常处理/日志记录,asp.net,exception,exception-handling,Asp.net,Exception,Exception Handling,是否有一种简单的方法来记录ASP.NET应用程序中的所有异常?我已经通过Application_OnError事件记录了未处理的异常,但我希望即使在页面级别处理异常时也执行日志记录 非常感谢。在catch块中调用您的日志组件以获取已处理的异常。我认为没有任何方法可以自动记录已处理的异常。如果您已经在为未处理的异常执行应用程序错误日志记录,恐怕Colin是正确的,您必须在catch块中调用日志记录组件来记录要记录的已处理异常。假设您只抛出并捕获自己的异常类型(源自System.exception

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


非常感谢。

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

我认为没有任何方法可以自动记录已处理的异常。如果您已经在为未处理的异常执行应用程序错误日志记录,恐怕Colin是正确的,您必须在catch块中调用日志记录组件来记录要记录的已处理异常。

假设您只抛出并捕获自己的异常类型(源自System.exception ofc),您可以在其构造函数中记录任何需要的基本异常。

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

ASP.NET运行状况监视以一种优雅且相当自动的方式执行此操作(无需手动捕获异常):

单击第一个链接时,将显示一个如何启用和配置ASP.NET运行状况监视的示例。您需要在web.config文件中对其进行配置

要记录到数据库,可以使用ASP.NET SQL Server注册工具创建相应的表:

我真的很喜欢。对于手动日志记录,可能对您有帮助,但这有点离题


马蒂亚斯我同意柯林的观点,你应该在任何地方记录你抓到的鱼(不要再抓)


但是,如果您需要记录每个异常,而不需要对代码进行太多修改,那么请处理,您将获得所有异常(可能太多了:p,但它可以帮助您清理代码)。

是的。但我想知道是否有更简单的方法?不单独修改每个catch语句?如果不处理错误,为什么会有catch语句?如果你处理了这个错误,那么就没有必要用它阻塞你的日志了?!我确实是为了用户的利益而处理错误的,但我需要更多的信息来进行调试,而不是向用户显示的信息。这是不可能的,因为标准.Net组件会引发许多异常-将这些异常重新引用为您自己的将是非常浪费的。我必须提供我自己的基本异常类型,然后修改每个catch语句,但至少我所有的日志记录功能都在一个地方。@ck-你是说,例如,服务器控件引发的异常,即dropdownlist被设置为无效的selectedindex?这是最可接受的解决方案,因为其他的都是“做不到的”。谢谢,Meeh。在实际应用程序中,您不能只捕获自己的异常类型。您可以做的是在upper层(即UI)中捕获它们。这将要求您在较低的层将捕获到的每个异常封装在自己的异常类型中,并重新抛出它们。但是,这仍然不能涵盖所有的场景。您是指通过捕获它、使用Page_Error或其他方式进行处理吗?请更具体一点。“您可以在不更改代码的任何一行的情况下获得以下功能:*记录几乎所有未处理的异常。”+20推荐Elmah。它已成为开发IMHO的标准。如果我记得的话,我也会使用它。虽然这在理论上可以回答这个问题,但在这里包括答案的基本部分,并提供链接供参考。