ASP.NET记录错误日志的实现方法
在本文中,我们将通过一个简单的处理来记录在我们的网站中的错误和异常。我们这样操作,每当遇到程序错误时,将使用者导航到一个单独的页面,同时错误将被记录到服务器上的一个文本文件,每当错误发生时,我们将以日志的形式每天记录。
首先,我先写一个静态方法用于将错误信息记录到文本文件,这里是将错误信息记录到服务器上的error文件夹下
代码如下:
using system.globalization;
/// <summary>
/// 用于将错误信息输出到txt文件
/// </summary>
/// <param name="errormessage">错误详细信息</param>
public static void writeerror(string errormessage)
{
try
{
string path = "~/error/" + datetime.today.tostring("yymmdd") + ".txt";
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("\r\nlog entry : ");
w.writeline("{0}", datetime.now.tostring(cultureinfo.invariantculture));
w.writeline(errormessage);
w.writeline("________________________________________________________");
w.flush();
w.close();
}
}
catch (exception ex)
{
writeerror(ex.message);
}
}
在网站global.asax文件的application_error中加入如下代码
void application_error(object sender, eventargs e)
{
// 在出现未处理的错误时运行的代码
exception objerr = server.getlasterror().getbaseexception();
//记录出现错误的ip地址
string strip = request.userhostaddress;
string err = "ip【" + strip + "】" + environment.newline + "error in【" + request.url.tostring() +
"】" + environment.newline + "error message【" + objerr.message.tostring() + "】";
//记录错误
fn.writeerror(err);
}
配置web.config文件
<system.web>
<customerrors mode="remoteonly" defaultredirect="genericerrorpage.htm">
<!--可以指定其他错误页面...-->
</customerrors>
</system.web>
建立一个genericerrorpage.htm文件,用于使用者出现错误时呈现的错误页面。