在系统出现未处理的错误时,在Global的Application_Error记录下错误
2012-01-14 21:47
453 查看
在我们开发系统时,一般都会记录日志信息,这样方便日后进行维护,同时如果系统出现了错误,也会方便查找,很多
系统开发时都会使用成熟的日志组件,如log4net。但是我今天要介绍的不是日志组件,而是在某些特别的情况下,我们没有
能捕获错误该怎么办???
正如标题所说的,我们可以在Global文件的Application_Error中对错误进行捕获,并记录下来。
下面就来看看下面一段示例代码:
protected void Application_Error(object sender, EventArgs e)
{
// 在出现未处理的错误时运行,获取错误
Exception objErr = Server.GetLastError().GetBaseException();
if (objErr != null)
{
string error = "Error Page: " + Request.Url.ToString() + "<br>";
if (objErr.Message != null)
{
error += "Error Message: " + objErr.Message + "<br>";
}
if (objErr.StackTrace != null)
{
error += "Stack Message:" + objErr.StackTrace + "<br>";
}
if (objErr.InnerException != null)
{
error += "InnerException" + objErr.InnerException.Message + "<br>";
}
string strSystemLog = "GlobalSystemLog.Log";
string strSystemLogpath = Server.HtmlEncode(strSystemLog);
FileInfo fi = new FileInfo(strSystemLogpath);
if (File.Exists(strSystemLogpath))
{
using (StreamWriter sw = fi.AppendText())
{
sw.WriteLine();
sw.WriteLine(DateTime.Now.ToShortTimeString() + "\n" + error + "\n");
sw.Close();
}
}
else
{
using (StreamWriter sw = fi.CreateText())
{
sw.WriteLine();
sw.WriteLine(DateTime.Now.ToShortTimeString() + "\n" + error + "\n");
sw.Close();
}
}
Server.ClearError();
Application["error"] = error;
//跳转到系统出错页面
Response.Redirect("~/SystemError.aspx");
}
}
系统开发时都会使用成熟的日志组件,如log4net。但是我今天要介绍的不是日志组件,而是在某些特别的情况下,我们没有
能捕获错误该怎么办???
正如标题所说的,我们可以在Global文件的Application_Error中对错误进行捕获,并记录下来。
下面就来看看下面一段示例代码:
protected void Application_Error(object sender, EventArgs e)
{
// 在出现未处理的错误时运行,获取错误
Exception objErr = Server.GetLastError().GetBaseException();
if (objErr != null)
{
string error = "Error Page: " + Request.Url.ToString() + "<br>";
if (objErr.Message != null)
{
error += "Error Message: " + objErr.Message + "<br>";
}
if (objErr.StackTrace != null)
{
error += "Stack Message:" + objErr.StackTrace + "<br>";
}
if (objErr.InnerException != null)
{
error += "InnerException" + objErr.InnerException.Message + "<br>";
}
string strSystemLog = "GlobalSystemLog.Log";
string strSystemLogpath = Server.HtmlEncode(strSystemLog);
FileInfo fi = new FileInfo(strSystemLogpath);
if (File.Exists(strSystemLogpath))
{
using (StreamWriter sw = fi.AppendText())
{
sw.WriteLine();
sw.WriteLine(DateTime.Now.ToShortTimeString() + "\n" + error + "\n");
sw.Close();
}
}
else
{
using (StreamWriter sw = fi.CreateText())
{
sw.WriteLine();
sw.WriteLine(DateTime.Now.ToShortTimeString() + "\n" + error + "\n");
sw.Close();
}
}
Server.ClearError();
Application["error"] = error;
//跳转到系统出错页面
Response.Redirect("~/SystemError.aspx");
}
}
相关文章推荐
- 在系统出现未处理的错误时,在Global的Application_Error记录下错误
- global文件里Application_Error方法处理记录应用程序错误日志
- 利用Global.asax的Application_Error实现错误记录,错误日志
- 使用Application_Error事件处理程序把异常记录到系统事件日志
- 11.在Global的Application_Error处理错误示例
- Asp.Net : 捕捉和记录网站中出现的所有未处理错误,抛出详细的页面来源和访问ip,调用的接口方法及异常实例(记事本日志,系统日志及数据库日志)
- Global.asax的Application_Error实现错误记录/错误日志的代码
- 在Global中Application_Error事件处理错误信息
- 在Global中Application_Error事件处理错误信息
- [置顶] 利用Global.asax的Application_Error实现错误记录,错误日志
- Global.asax的Application_Error实现错误记录/错误日志的代码
- 网狐荣耀版或其它安卓项目出现Application cannot be exported due to the error(s) below.错误的处理方法
- KEIL编译出现错误问题处理 Error: L6200E: Symbol
- 一次MySQL主从搭建出现“Last_IO_Errno: 1236”错误的处理记录
- Sys.WebForms.PageRequestManagerServerErrorException: 在服务器上处理请求时出现未知错误解决办法
- iis出现 Server Application Error 错误解决方法
- Sys.WebForms.PageRequestManagerServerErrorException: 在服务器上处理请求时出现未知错误解决办法
- ASP.NET MVC中注册Global.asax的Application_Error事件处理全局异常
- 处理phonegap(cordova) application error the connection to the server was unsuccessful的错误
- Sys.WebForms.PageRequestManagerServerErrorException: 在服务器上处理请求时出现未知错误解决办法