1. XML を設計します。これには次の情報が含まれます。
1. 日時: エラー/例外が発生した日時
2. ファイル名: エラー/例外が発生したファイル名
3. クラス名: エラー/例外が発生したクラス名
4. Methodname: エラー/例外が発生したメソッドの名前
5. Errormethod: エラーコードを含む関数名
6. メッセージ: エラー/例外情報
7. エラーの詳細: エラー/例外の詳細
8. IP: クライアント IP アドレス
9. URL:エラーが発生したURL
デモXML:
デモXML
<?xml バージョン="1.0" エンコーディング="utf-8"?>
<エラーログ>
<エラー>
<日時>日時</日時>
<ファイル名>ファイル名</ファイル名>
<クラス名>クラス名</クラス名>
<メソッド名>メソッド名</メソッド名>
<エラーメソッド>エラーメソッド</エラーメソッド>
<メッセージ>エラーメッセージ</メッセージ>
<errordetails>詳細はここにあります</errordetails>
<IP>IP アドレス</IP>
<url>URL</url>
</エラー>
</エラーログ>
2. エラー処理クラス errorHandler.cs を設計します。内部の WriteError メソッドには、Exception と FileName という 2 つのパラメータが必要です。
errorHandler.cs
システムを使用する;
System.Collections.Generic を使用します。
System.Text を使用します。
System.Xml を使用します。
System.Reflection を使用します。
System.Diagnostics を使用します。
名前空間 code_center
{
パブリック クラス errorHandler
{
文字列 _strErrorMessage、_strDetails、_strClassName、_strMethodName;
DateTime _dtOccuranceTime = new DateTime();
パブリック errorHandler()
{
}
public errorHandler(DateTime time, string className, string methodName,
文字列 errorMessage、文字列の詳細)
{
_dtOccuranceTime = 時間;
_strClassName = クラス名;
_strDetails = 詳細;
_strErrorMessage = エラーメッセージ;
_strMethodName = メソッド名;
}
public static void WriteError(Exception ex)
{
WriteError(ex, "");
}
public static void WriteError(Exception ex, string fileName)
{
XmlDocument ドキュメント = 新しい XmlDocument();
文字列 strRootPath =
System.Configuration.ConfigurationManager.AppSettings["ログファイルパス"].ToString();
文字列 xmlPath = System.Web.HttpContext.Current.Server.MapPath(strRootPath);
doc.Load(@xmlPath);
XmlNode newXMLNode、oldXMLNode;
oldXMLNode = doc.ChildNodes[1].ChildNodes[0];
newXMLNode = oldXMLNode.CloneNode(true);
スタックトレース stackTrace = new StackTrace();
StackFrame stackFrame = stackTrace.GetFrame(1);
MethodBase メソッドベース = stackFrame.GetMethod();
newXMLNode.ChildNodes[0].InnerText = DateTime.Now.ToString();
newXMLNode.ChildNodes[1].InnerText = ファイル名;
newXMLNode.ChildNodes[2].InnerText = methodBase.DeclaringType.FullName;
newXMLNode.ChildNodes[3].InnerText = methodBase.Name;
newXMLNode.ChildNodes[4].InnerText = ex.TargetSite.Name;
newXMLNode.ChildNodes[5].InnerText = ex.Message;
newXMLNode.ChildNodes[6].InnerText = ex.StackTrace;
newXMLNode.ChildNodes[7].InnerText = System.Web.HttpContext.Current.Request.UserHostAddress;
newXMLNode.ChildNodes[8].InnerText = System.Web.HttpContext.Current.Request.Url.OriginalString;
doc.ChildNodes[1].AppendChild(newXMLNode);
doc.Save(@xmlPath);
doc.RemoveAll();
}
}
}
3. Web.config に追加します。
<アプリ設定>
<add key="logfilepath" value="~/errorHandling/errorlog.xml"/>
</アプリ設定>
4. テスト: 2 つのテスト コードを Web サイトに追加します。
1. Page_Load で:
ページロード
パブリック部分クラス _Default : System.Web.UI.Page
{
protected void Page_Load(オブジェクト送信者, EventArgs e)
{
試す
{
throw new Exception("カスタム エラー");
}
catch (例外例)
{
Response.Write(例:メッセージ);
kirin.errorHandler.WriteError(例、「Default.aspx.cs」);
}
}
}
2. Application_Error に次を追加します。
void Application_Error(オブジェクト送信者、EventArgs e)
{
code_center.errorHandler.WriteError(Server.GetLastError().GetBaseException(),
"Global.asax");
}
3. Page_Load 例外の結果:
エラーXML
<エラー>
<日時>2010-1-29 9:29:24</日時>
<ファイル名>Default.aspx.vb</ファイル名>
<クラス名>kirin._Default</クラス名>
<メソッド名>Page_Load</メソッド名>
<errormethod>Page_Load</errormethod>
<message>カスタム エラー</message>
<errordetails> kirin._Default.Page_Load(Object sender, EventArgs e) の場所 C:Demokirin_code_centerkirinDefault.aspx.cs: 行番号 16</errordetails>
<IP>127.0.0.1</IP>
<url>http://localhost:2192/default.aspx</url>
</エラー>
5.完全なコード:/Files/zhuqil/kirin_errorHandler.rar
著者:Zhu Qilin 出典:http: //zhuqil.cnblogs.com
この記事の著作権は著者に帰属しており、転載は歓迎します。ただし、この記述は著者の承諾なしに保持し、記事ページのわかりやすい位置に原文へのリンクを掲載する必要があります。法的責任を追及する権利は留保されます。