您的位置:首页 > 编程语言 > ASP

ASP.NET错误处理 日志记录

2010-04-18 23:20 766 查看
Java有log4j记录错误日志,而asp.net可以自己写一个来记录错误日志!

先封装一个类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.IO;
using System.Globalization;

/// <summary>
/// ErrHandler 错误日志处理类
/// </summary>
public class ErrHandler
{
public ErrHandler()
{
//
// TODO: Add constructor logic here
//
}
public static void WriteError(Exception e)
{
try
{
///错误日志记录地址[每天产生一个日志文件]
string path = "~/Error/" + DateTime.Today.ToString("dd-MM-yy") + ".log";
if (!File.Exists(System.Web.HttpContext.Current.Server.MapPath(path)))
{
///不存在该日志,则创建
File.Create(System.Web.HttpContext.Current.Server.MapPath(path)).Close();
}
///写日志记录
using (StreamWriter w = File.AppendText(System.Web.HttpContext.Current.Server.MapPath(path)))
{
w.WriteLine("Error Recode:");
w.WriteLine("\tError Time:{0}", DateTime.Now.ToString(CultureInfo.InvariantCulture));
w.WriteLine("\tError Address:" + System.Web.HttpContext.Current.Request.Url.ToString());
w.WriteLine("\tTargetSite:" + e.TargetSite);
w.WriteLine("\tError Message:" + e.Message);
w.WriteLine("\tError HelpLink:" + e.HelpLink);
w.WriteLine("\tError StackTrace:" + e.StackTrace);
w.WriteLine("************************************************************************************");
w.WriteLine("\r\n\r\n");
w.Flush();
w.Close();
}
}
catch (Exception ex)
{
WriteError(ex);
}
}

}


2.. 类写好了!哪里调用呢? 新建个Global.asax文件吧!

<%@ Application Language="C#" %>
<script runat="server">

void Application_Start(object sender, EventArgs e)
{
// Code that runs on application startup

}

void Application_End(object sender, EventArgs e)
{
//  Code that runs on application shutdown

}

void Application_Error(object sender, EventArgs e)
{
//获取最后的错误
Exception objErr = Server.GetLastError().GetBaseException();
// 这里开始记录咯
ErrHandler.WriteError(objErr);
//清除前一个错误
Server.ClearError();
}

void Session_Start(object sender, EventArgs e)
{
// Code that runs when a new session is started

}

void Session_End(object sender, EventArgs e)
{
// Code that runs when a session ends.
// Note: The Session_End event is raised only when the sessionstate mode
// is set to InProc in the Web.config file. If session mode is set to StateServer
// or SQLServer, the event is not raised.

}

</script>

这样只要一发生错误了,都会记录到日志里面! 你只需定期去检查错误日志了

当然你也可以在错误中记录,如:

try
{
throw new Exception("Error");
}
catch (Exception ex)
{
ErrHandler.WriteError(ex);
}

OVER

Technorati 标签: asp.net,error
var OB_langJS = 'http://widgets.outbrain.com/lang_chi.js'
var OBITm = '1270567224412';
var OB_raterMode = 'stars';
var OB_recMode = 'rec';
var OutbrainPermaLink='http://www.cnblogs.com';

if ( typeof(OB_Script)!='undefined' )
OutbrainStart();
else {
var OB_Script = true;
var str = '<\/script>';
document.write(str);
document.write("");
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: