【问题标题】:Logging unhandled exceptions using NLog? Should ELMAH and NLog be used together?使用 NLog 记录未处理的异常? ELMAH 和 NLog 应该一起使用吗?
【发布时间】:2011-05-03 05:40:22
【问题描述】:

我在我的 ASP.NET MVC 项目中使用 ELMAH,我真的很喜欢它的简单性。但是我需要能够以 log.Info("message") 方式在我的代码中记录某些事件。由于 ELMAH 不提供该功能,因此我开始研究 NLog。

想到了几个问题:

  1. 同时使用 ELMAH 和 NLog 是否过大?使用 ELMAH 处理未处理的异常,使用 NLog 处理其他所有异常?
  2. 是否可以将 NLog 配置为在 nlog.config 中记录未处理的异常,或者是否需要自定义代码?
  3. 如果需要自定义代码,添加它的最佳位置是哪里? MVC框架中的OnException方法? global.asax 文件?

非常感谢您提供任何反馈。到目前为止我还没有找到任何关于这个问题的好帖子?

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-2 elmah nlog


    【解决方案1】:

    实际上,您可以从 ELMAH 触发警报。像这样:

     ErrorSignal.FromCurrentContext().Raise(new System.ApplicationException("An error occured in SendEmail()", ex));
    

    不要忘记添加对 elmah.dll 的引用并将using Elmah; 添加到文件中。 更多示例请参见here

    【讨论】:

      【解决方案2】:

      回答第 2 个问题,我刚刚阅读了 this article,其中解释了如何使用 NLog 记录未处理的异常。基本上是在 Global.asax.cs 文件中添加类似:

      protected void Application_Error() 
      {
          Exception lastException = Server.GetLastError();
          NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
          logger.Fatal(lastException);
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-02-04
        • 1970-01-01
        • 2017-11-22
        • 1970-01-01
        • 2015-07-18
        • 1970-01-01
        • 2014-05-07
        • 2017-11-01
        相关资源
        最近更新 更多