网站正式上线后不免会出现很多BUG引起的500,请问有办法把这些500页面的信息记录下来吗?比如500页面url,引发原因等。我记得Java默认是记录的,Asp.net有这样的功能吗?
解决方案 »
- 请问如何来做 手机号码归属地查询 ??? 急急急急急急急急急急急
- .net有关DropDownList分组
- table布局问题
- fckeditor问题,在使用中导致浏览器死机,未响应
- 如何选择网站开发技术
- 关于JavaScript处理服务器端的异常!
- (200分请教)ObjectDataSource绑定GridView 的问题~有请|思归|等高手光临!
- 如何用一个用asp.net控件做一个锚点?
- 怎么读写2个EXCEL文件,并合并成一个EXCEL文件
- 请推荐比较好用的asp.net(c#)论坛
- Ifram中的一个跨域页面将数据以Post方式提交到本站另一页面,如何即时接收数据到Ifram所在页面?
- .net问题,急!!!
我不需要转跳错误页面,只需要记录错误页面url和错误发生原因以便日后的维护更新。
请问楼上的如何打开iis的错误记录呢?
iis默认的log只是记录访问信息的。
<error statusCode= "404 " redirect= "/errorpages/FileNotFound.htm " />
<error statusCode= "403 " redirect= "/errorpages/GeneralError.htm " />
<error statusCode= "500 " redirect= "/errorpages/GeneralError.htm " />
</customErrors> void Application_Error(object sender, EventArgs e)
{
Exception objErr = Server.GetLastError().GetBaseException();
string error = "发生异常页: " + Request.Url.ToString() + "<br>";
error += "异常信息: " + objErr.Message + "<br>";
Server.ClearError();
Application["error"] = error;
Response.Redirect("ErrorPage.aspx");
}
void Application_Error(object sender, EventArgs e)
{
Exception objErr = Server.GetLastError().GetBaseException();
string error = "发生异常页: " + Request.Url.ToString() + "<br>";
error += "异常信息: " + objErr.Message + "<br>";
Server.ClearError();
Application["error"] = error;
Response.Redirect("ErrorPage.aspx");
}
学习了!
/// 系统日志管理类
/// </summary>
public class SystemLog
{
/// <summary>
/// 默认文件路径及名称
/// </summary>
private static string logFilePath =
"Log.txt";
/// <summary>
/// 默认文件大小
/// </summary>
private static long logFileMaxSize = 500000; /// <summary>
/// 日志文件的最大值 默认最大值是500KB
/// </summary>
public static long LogFileMaxSize
{
get { return SystemLog.logFileMaxSize; }
set { SystemLog.logFileMaxSize = value; }
}
/// <summary>
/// 文件的路径 默认文件名配置在web.config文件的ConnectionString节点下
/// 节点名字是"Log"
/// 如果需要手动书写日志的文件 可以通过设置这个属性来写入
/// </summary>
public static string LogFilePath
{
get { return SystemLog.logFilePath; }
set { logFilePath = value; }
}
/// <summary>
/// 清理日志文件
/// </summary>
/// <param name="fileName">日志文件的名称</param>
private static void ClearText(string fileName)
{
File.WriteAllText(fileName, ""); }
/// <summary>
/// 检查日志文件 如果日志文件太大,系统自动清理日志文件
/// 如果日志文件不存在系统自己创建日志文件
/// </summary>
/// <param name="fileName">日志文件名称</param>
/// <returns>返回操作日志文件的对象</returns>
private static StreamWriter CheckText(string fileName)
{
//定义写入文件流对象
StreamWriter tw = null;
//判断文件是否存在
if (File.Exists(fileName))
{
//文件如果存在 使用File类的Open方法打开文件
FileStream fs = File.Open(fileName, FileMode.OpenOrCreate);
//判断文件的大小 如果文件大于设置好的大小
if (fs.Length > logFileMaxSize)
{
//关闭文件
fs.Close();
//使用自定方法 ClearText()清理文件内容
ClearText(fileName);
}
//关闭文件
fs.Close(); }
//以追加的方式打开文件 返回文件操作对象 tw
tw = File.AppendText(fileName); return tw;
}
/// <summary>
/// 写入日志文件 当系统发生错误的时候系统自动写入记事本日志文件,易
/// 方便系统管理者维护自己的系统。
/// </summary>
/// <param name="appData">系统日志文件配置的路径和文件名</param>
public static void WriteLogFile(string appData)
{
//定义字符串变量 获得文件的路径和名称
//使用httpcontent对象和server对象完成路径的转换
string fileName =
System.Web.HttpContext.Current.Server.MapPath(logFilePath);
//使用内置方法CheckText()检测文件
StreamWriter tw = CheckText(fileName);
//写入一行行数据
tw.WriteLine();
//写入时间
tw.Write(DateTime.Now);
//写入提示
tw.Write(" 系统异常内容: ");
//写入错误信息
tw.Write(appData);
//写入特殊标志 \\n方便文本控件换行输出 <br>方便网页直接输出
tw.Write("\\n");
tw.Write("<br>");
//关闭文件对象
tw.Close();
} /// <summary>
/// 读取记事本系统日志文件
/// </summary>
/// <returns>返回日志内容</returns>
public static StringBuilder ReadLogFile()
{
//定义字符串变量 获得文件的路径和名称
//使用httpcontent对象和server对象完成路径的转换
string fileName =
System.Web.HttpContext.Current.Server.MapPath(logFilePath);
//打开文件已便读取文件
StreamReader sr = new StreamReader(fileName);
//定义接受变成字符串内容
StringBuilder sb = new StringBuilder();
//追加读取
sb.Append(sr.ReadToEnd());
//关闭文件
sr.Close();
return sb;
}
}