asp.net错误日志写入

系统 1450 0
当我们一个web项目开发已完成,测试也通过了后,就把他放到网上去,但是,bug是测不完的,特别是在一个大的网络环境下。那么,我们就应该记录这些错误,然后改正。这里,我的出错管理页面是在global.asax里面的,因为里面有一个Application_Error函数,我觉得这个就是管理错误的。其实,asp.net里还有一个方法,就是在 page 里指定出错的页面,由这个页面专门管理,我觉得这个方法也好,但是每次都要到相应的page里指定参数,不过,我觉得应该可以在web.config里配置吧。但是我还是喜欢下面的方法。下面我们就开始吧。
Global.asax代码:
<% @ApplicationLanguage = " C# " %>

< scriptrunat = " server " >

void Application_Start( object sender,EventArgse)
{
// 在应用程序启动时运行的代码

}


void Application_End( object sender,EventArgse)
{
// 在应用程序关闭时运行的代码

}


void Application_Error( object sender,EventArgse)
{
// 在出现未处理的错误时运行的代码

ExceptionobjErr
= Server.GetLastError().GetBaseException();
string error = string .Empty;
string errortime = string .Empty;
string erroraddr = string .Empty;
string errorinfo = string .Empty;
string errorsource = string .Empty;
string errortrace = string .Empty;

error
+= " 发生时间: " + System.DateTime.Now.ToString() + " <br> " ;
errortime
= " 发生时间: " + System.DateTime.Now.ToString();

error
+= " 发生异常页: " + Request.Url.ToString() + " <br> " ;
erroraddr
= " 发生异常页: " + Request.Url.ToString();

error
+= " 异常信息: " + objErr.Message + " <br> " ;
errorinfo
= " 异常信息: " + objErr.Message;

// error+="错误源:"+objErr.Source+"<br>";
// error+="堆栈信息:"+objErr.StackTrace+"<br>";
errorsource = " 错误源: " + objErr.Source;
errortrace
= " 堆栈信息: " + objErr.StackTrace;
error
+= " --------------------------------------<br> " ;
Server.ClearError();
Application[
" error " ] = error;

// 独占方式,因为文件只能由一个进程写入.
System.IO.StreamWriterwriter = null ;
try
{
lock ( this )
{
// 写入日志
string year = DateTime.Now.Year.ToString();
string month = DateTime.Now.Month.ToString();
string path = string .Empty;
string filename = DateTime.Now.Day.ToString() + " .txt " ;
path
= Server.MapPath( " ~/Error/ " ) + year + " / " + month;
// 如果目录不存在则创建
if ( ! System.IO.Directory.Exists(path))
{
System.IO.Directory.CreateDirectory(path);
}

System.IO.FileInfofile
= new System.IO.FileInfo(path + " / " + filename);
// if(!file.Exists)
// file.Create();
// file.Open(System.IO.FileMode.Append);
writer = new System.IO.StreamWriter(file.FullName, true ); // 文件不存在就创建,true表示追加
writer.WriteLine( " 用户IP: " + Request.UserHostAddress);
// if(Session["UserName"]!=null)
// {
// writer.WriteLine("用户名"+System.Web.HttpContext.Current.Session["UserName"].ToString());
// }
writer.WriteLine(errortime);
writer.WriteLine(erroraddr);
writer.WriteLine(errorinfo);
writer.WriteLine(errorsource);
writer.WriteLine(errortrace);
writer.WriteLine(
" -------------------------------------------------------------------------------------- " );
// writer.Close();
}

}

finally
{
if (writer != null )
writer.Close();

}

Response.Redirect(
" ~/Error/ErrorPage.aspx " );


}


void Session_Start( object sender,EventArgse)
{
// 在新会话启动时运行的代码
Session.Timeout = 60 ;
if (Session.IsNewSession)
{
lock ( this )
{
if (Application[ " Counts " ] != null )
{
Application[
" Counts " ] = Int32.Parse(Application[ " Counts " ].ToString()) + 1 ;
}

else
{
Application[
" Counts " ] = 1 ;
}

}

}

}


void Session_End( object sender,EventArgse)
{
// 在会话结束时运行的代码。
// 注意:只有在Web.config文件中的sessionstate模式设置为
// InProc时,才会引发Session_End事件。如果会话模式设置为StateServer
// 或SQLServer,则不会引发该事件。
if (Application[ " Counts " ] != null )
{
Application[
" Counts " ] = Int32.Parse(Application[ " Counts " ].ToString()) - 1 ;
}

}


</ script >

显示出错信息的页面
ErrorPage.aspx代码:
<% @PageLanguage = " C# " AutoEventWireup = " true " CodeFile = " ErrorPage.aspx.cs " Inherits = " Error_ErrorPage " %>

<! DOCTYPEhtmlPUBLIC " -//W3C//DTDXHTML1.0Transitional//EN " " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd " >

< htmlxmlns = " http://www.w3.org/1999/xhtml " >
< headrunat = " server " >
< title > 出错信息 </ title >
< linkhref = " css/SITE.CSS " type = " text/css " rel = " stylesheet " />
</ head >
< body >
< formid = " form1 " runat = " server " >
< asp:LabelID = " Label1 " runat = " server " Width = " 568px " ></ asp:Label >

</ form >
</ body >
</ html >

ErrorPage.aspx.cs
protected void Page_Load( object sender,EventArgse)
{
this .Label1.Text = Application[ " Error " ].ToString();
}

asp.net错误日志写入


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论