您的位置:首页 > 其它

只需要三步就可以创建错误日志,记录错误日志,拿来就能用,无需改

2013-02-05 21:05 288 查看
第一步,在网站上创建一个文件夹,取名error(针对下面的代码只能用这个)

第二步,在网站上右键》添加新建项》全局应用程序类 ,就是Global.asax(不能改名字,只能创建一次),

global文件的 内容:(把这些全考过去就行了,其实改变的只是Application_Error里面的代码,只把Application_Error里面代码的拷过去也行)

<%@ Application Language="C#" %>

<script RunAt="server">

void Application_Start(object sender, EventArgs e)

{

// 在应用程序启动时运行的代码

}

void Application_End(object sender, EventArgs e)

{

// 在应用程序关闭时运行的代码

}

void Application_Error(object sender, EventArgs e)

{

// 在出现未处理的错误时运行的代码

Exception objErr = 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.StreamWriter writer = 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.FileInfo file = 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["Identity"] != null)

// {

// writer.WriteLine("登录帐号:" System.Web.HttpContext.Current.Session["Identity"]).YongHuInfo.ACCOUNTID);

// }

writer.WriteLine(errortime);

writer.WriteLine(erroraddr);

writer.WriteLine(errorinfo);

writer.WriteLine(errorsource);

writer.WriteLine(errortrace);

writer.WriteLine("【this Error From http://hi.baidu.com/yanwei99521】");
writer.WriteLine("--------------------------------------------------------------------------------------");

}

}

finally

{

if (writer != null)

writer.Close();

}

Response.Redirect("~/HTMLPage.htm");

}

void Session_Start(object sender, EventArgs e)

{

// 在新会话启动时运行的代码

}

void Session_End(object sender, EventArgs e)

{

// 在会话结束时运行的代码。

// 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为

// InProc 时,才会引发 Session_End 事件。如果会话模式设置为 StateServer

// 或 SQLServer,则不会引发该事件。

}

</script>

第三步,在网站下面添加一个htm文件,做为错误页面,取名HTMLPage.htm,也是针对上面的代码才取名叫这个的

测试结果

只要出错就会蹦出错误页面,如下:



然后可以在error文件夹里面根据当前查找错误日志,根据错误日志再修改代码,错误日志是如下图:



哦了~~这三部做完就大功告成了,快试一下吧
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: