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

时间:2010-11-01 01:07:47

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

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

我想到了几个问题:

  1. 使用ELMAH和NLog是否过度杀伤?使用ELMAH进行未处理的异常,将NLog用于其他所有内容吗?
  2. 是否可以将NLog配置为在nlog.config中记录未处理的异常,或者是否需要自定义代码?
  3. 如果需要自定义代码,哪里是添加它的最佳位置? MVC框架中的OnException方法? global.asax文件?
  4. 非常感谢Anny的反馈。到目前为止,我还没有找到关于此事的好帖子?

2 个答案:

答案 0 :(得分:16)

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

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

答案 1 :(得分:4)

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

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

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