14

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

想到了几个问题:

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

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

4

2 回答 2

18

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

protected void Application_Error() 
{
    Exception lastException = Server.GetLastError();
    NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
    logger.Fatal(lastException);
}
于 2011-10-25T17:52:48.723 回答
4

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

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

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

于 2010-11-05T20:54:47.210 回答