首页 文章

使用NLog记录未处理的异常? ELMAH和NLog应该一起使用吗?

提问于
浏览
12

我在我的ASP.NET MVC项目中使用ELMAH,我真的很喜欢它的简单性 . 但我需要能够以log.Info(“message”)方式记录我的代码中的某些事件 . 由于ELMAH没有提供这种能力,我开始关注NLog .

想到几个问题:

  • 使用ELMAH和NLog是否过度杀伤?使用ELMAH处理未处理的异常,使用NLog处理其他所有情况?

  • 是否可以将NLog配置为在nlog.config中记录未处理的异常,或者是否需要自定义代码?

  • 如果需要自定义代码,哪里是添加它的最佳位置? MVC框架中的OnException方法? global.asax文件?

非常感谢Anny的反馈 . 到目前为止,我还没有找到关于此事的好帖子?

2 回答

  • 4

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

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

    事实上,你可以从ELMAH触发警报 . 像这样:

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

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

相关问题