Asp.net-Mvc

使用 NLog 記錄未處理的異常?ELMAH 和 NLog 應該一起使用嗎?

  • October 25, 2011

我在我的 ASP.NET MVC 項目中使用 ELMAH,我真的很喜歡它的簡單性。但是我需要能夠以 log.Info(“message”) 方式在我的程式碼中記錄某些事件。由於 ELMAH 不提供這種能力,我開始研究 NLog。

想到了幾個問題:

  1. 是否同時使用 ELMAH 和 NLog 過大?使用 ELMAH 處理未處理的異常,使用 NLog 處理其他所有異常?
  2. 是否可以將 NLog 配置為在 nlog.config 中記錄未處理的異常,或者是否需要自定義程式碼?
  3. 如果需要自定義程式碼,添加它的最佳位置是哪裡?MVC框架中的OnException方法?global.asax 文件?

非常感謝任何回饋。到目前為止,我還沒有找到任何關於這個問題的好文章?

實際上,您可以從 ELMAH 觸發警報。像這樣:

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

不要忘記添加對 elmah.dll 的引用並添加using Elmah;到文件中。有關更多範例,請參見此處。

在回答第 2 個問題時,我剛剛閱讀了這篇文章,其中解釋瞭如何使用 NLog 記錄未處理的異常。基本上是在 Global.asax.cs 文件中添加如下內容:

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

引用自:https://stackoverflow.com/questions/4066042