ASP.NET Application_Errorエラーログ書き込み
7522 ワード
Webプロジェクトの開発が完了し、テストも合格した後、彼をネット上に置きましたが、bugは測定できません.特に大きなネットワーク環境では.では、私たちはこれらの間違いを記録して、修正しなければなりません.ここで、私のエラー管理ページはglobalです.asaxの中にはApplicationが入っていますError関数、これが管理ミスだと思います.実はasp.Netでもう一つの方法は、pageでエラーのページを指定し、このページで専門的に管理することです.この方法もいいと思いますが、毎回対応するpageにパラメータを指定しなければなりませんが、webでできると思います.configに配置しましょう.しかし、私はやはり次の方法が好きです.それでは始めましょう.Global.asaxコード:
エラーメッセージを表示するページErrorPage.aspxコード:
ErrorPage.aspx.cs
protected void Page_Load(object sender,EventArgs e){if(!Page.IsPostBack){lblMsg.Text=Application[「error」.ToString()+「
<%@ 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;
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() + ".html";
path = Server.MapPath("~/ErrorLog/") + year + "/" + month;
//
if (!System.IO.Directory.Exists(path))
{
System.IO.Directory.CreateDirectory(path);
}
System.IO.FileInfo file = new System.IO.FileInfo(path + "/"+filename);
// ,true
writer = new System.IO.StreamWriter(file.FullName, true);
string ip = " IP:" + Request.UserHostAddress;
string line = "-----------------------------------------------------";
string log = "<p style='font-size:9pt;'><br>" + line + "<br><font color=red>" + errortime + " " + erroraddr + "</font><br><font color=green>" + "<br/>" + ip + errorinfo + "<br>" + errorsource + "<br>" + errortrace.Replace("\r
", "<br>") + "</font></p>";
writer.WriteLine(log);
}
}
finally
{
if (writer != null)
writer.Close();
}
Response.Redirect("~/ErrorPage.aspx");
}
void Session_Start(object sender, EventArgs e)
{
//
}
void Session_End(object sender, EventArgs e)
{
// 。
// : Web.config sessionstate
// InProc , Session_End 。 StateServer
// SQLServer, 。
}
</script>
エラーメッセージを表示するページErrorPage.aspxコード:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ErrorPage.aspx.cs" Inherits="ErrorPage" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title> </title>
<script language="javascript" type="text/javascript">
// <!CDATA[
// ]]>
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<table width="600" border="0" align="center" cellpadding="1" cellspacing="0">
<tr>
<td class="table_bgcolor" style="height: 138px">
<table width="100%" border="1" cellpadding="5" cellspacing="0" class="table_bordercolor">
<tr bgcolor="#e4e4e4">
<td class="table_title" style="height: 22px"><STRONG><FONT color="red"> :</FONT></STRONG></td>
</tr>
<tr>
<td height="22">
<table cellSpacing="0" cellPadding="0" width="100%" border="0">
<tr>
<td height="22">
<asp:Label id="lblMsg" runat="server" Width="100%"></asp:Label>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td style="height: 22px">
<div align="center">
<asp:Button ID="Button1" Text=" " style="WIDTH: 100p" runat="server" OnClick="Button1_Click" />
</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
</form>
</body>
</html>
ErrorPage.aspx.cs
protected void Page_Load(object sender,EventArgs e){if(!Page.IsPostBack){lblMsg.Text=Application[「error」.ToString()+「
この情報はシステムに記録されています.再試行または管理者に連絡してください.」 Server.ClearError(); } } protected void Button1_Click(object sender, EventArgs e) { Response.Redirect("~/Login.aspx"); }