2016-05-17 25 views
0

我完全是Log4Net的新手。我已經能夠實現我在​​網上找到的下面的代碼。它在捕獲和保存數據,即日期,登錄用戶,IP地址等方面工作良好......log4net正在捕獲除堆棧跟蹤以外的所有內容

唯一的問題是,例外字段是空白。我想捕獲堆棧跟蹤

public void Application_Error(object sender, EventArgs e) 
    { 
     //Fires when an error occurs 
     var redirectUrl = "~/Error/GenericError.aspx"; 
     var httpException = (HttpException)Server.GetLastError(); 
     int httpCode = httpException.GetHttpCode(); 

     log4net.GlobalContext.Properties("ipaddress") 
            = Request.ServerVariables("remote_addr"); 
     log4net.GlobalContext.Properties("thread") = Request.Url.AbsoluteUri; 
     log4net.GlobalContext.Properties("userid") = User.Identity.Name; 

     var ctx = HttpContext.Current; 
     var _url = ctx.Request.Url.ToString(); 
     log4net.GlobalContext.Properties("url") = _url; 
     log4net.GlobalContext.Properties("browser") = ctx.Request.Browser.Browser; 

     log4net.ILog log = log4net.LogManager.GetLogger(this.GetType()); 
     log.Error(httpException.Message); 


     if ((httpCode == 404)) 
     { 
      redirectUrl = "~/Error/FileNotFound.aspx"; 
     } 
     else if ((httpCode == 403)) 
     { 
      redirectUrl = "~/Error/UnauthorizedAccess.aspx"; 
     } 
     else 
     { 
      var message = string.Empty; 
      if (httpException is HttpRequestValidationException) 
      { 
       message = "A potentially dangerous Request.Form value" 
            + " was detected from the client."; 
      } 
      else 
      { 
       message = httpException.Message; 
      } 
      redirectUrl = "~/Error/GenericError.aspx?msg=" + message; 
     } 

     Server.ClearError(); 
     Server.Transfer(redirectUrl); 
    } 

這是webconfig的log4net的部分

<parameter> 
    <parameterName value="@exception" /> 
    <dbType value="String" /> 
    <size value="2000" /> 
    <layout type="log4net.Layout.ExceptionLayout" /> 
    </parameter> 

感謝您的幫助

+0

哪些空白例外字段你在說什麼? – CodeCaster

+0

表中有一個名爲Exception的字段。將行改爲@stuartd提供的答案,現在正在填充「message」和「exception」字段。 – Richard77

回答