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>
感謝您的幫助
哪些空白例外字段你在說什麼? – CodeCaster
表中有一個名爲Exception的字段。將行改爲@stuartd提供的答案,現在正在填充「message」和「exception」字段。 – Richard77