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

Tho*_*mas 12 asp.net-mvc elmah nlog asp.net-mvc-2

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

想到几个问题:

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

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

fel*_*xmm 16

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

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


edo*_*oft 4

事实上,您可以触发 ELMAH 的警报。就像这样:

 ErrorSignal.FromCurrentContext().Raise(new System.ApplicationException("An error occured in SendEmail()", ex));
Run Code Online (Sandbox Code Playgroud)

不要忘记添加对 elmah.dll 的引用并添加using Elmah;到文件中。请参阅此处了解更多示例。