2013-03-11 54 views
0

我把下面的代碼在全局文件中捕捉異常在我的MVC應用程序:在MVC 3應用程序中如何使用log4net捕獲異常?

void Application_Error(Object sender, EventArgs e) 
     { 
      Exception ex = Server.GetLastError().GetBaseException(); 
      log.Error("Exception", ex); 
     } 

和下面的跟蹤什麼是所謂的控制器:

public override void OnActionExecuting(ActionExecutingContext filterContext) 
     { 
      if (log.IsDebugEnabled) 
      { 
       var loggingWatch = Stopwatch.StartNew(); 
       filterContext.HttpContext.Items.Add(StopwatchKey, loggingWatch); 

       var message = new StringBuilder(); 
       message.Append(string.Format("Executing controller: {0}, action: {1}", 
        filterContext.ActionDescriptor.ControllerDescriptor.ControllerName, 
        filterContext.ActionDescriptor.ActionName)); 

       log.Debug(message); 
      } 
     } 

是否有更多我可以做捕獲涉及數據庫的錯誤,安全性(如無法連接到LDAP),數據問題/鑄造等。

+0

想知道如何處理在DAL和幫助程序類中放置日誌記錄? – Chaka 2013-03-11 19:26:33

回答

1

第二個代碼片段可以添加到全局動作過濾器(在global.asax中註冊)。第一個片段可以添加到單獨的IHttpModule實現中,以將其從global.asax中刪除。

除此之外,您已將代碼添加到將捕獲所有異常的兩個位置。第一個將被調用所有非MVC相關的異常,而後者僅適用於MVC異常(不包括路由)

+0

感謝您的洞察力 – Chaka 2013-03-11 19:25:15

+0

想知道如何處理DAL和幫助程序類中的日誌記錄? – Chaka 2013-03-11 19:26:07

+0

你不(除非你處理它們:http://blog.gauffin.org/2010/11/do-not-catch-that-exception)。這些錯誤將被錯誤過濾器捕獲。 – jgauffin 2013-03-11 19:46:08

相關問題