1. ออกแบบ xml ซึ่งควรมีข้อมูลต่อไปนี้:
1. วันที่เวลา: วันที่และเวลาที่เกิดข้อผิดพลาด/ข้อยกเว้น
2. ชื่อไฟล์: ชื่อไฟล์ที่เกิดข้อผิดพลาด/ข้อยกเว้น
3. ชื่อคลาส: ชื่อคลาสที่เกิดข้อผิดพลาด/ข้อยกเว้น
4. ชื่อวิธีการ: ชื่อของวิธีการที่เกิดข้อผิดพลาด/ข้อยกเว้น
5. วิธีการผิดพลาด: ชื่อฟังก์ชันที่มีรหัสข้อผิดพลาด
6. ข้อความ: ข้อมูลข้อผิดพลาด/ข้อยกเว้น
7. รายละเอียดข้อผิดพลาด: รายละเอียดข้อผิดพลาด/ข้อยกเว้น
8. IP: ที่อยู่ IP ไคลเอ็นต์
9. URL: URL ที่เกิดข้อผิดพลาด
DemoXML:
DemoXML
<?xml version="1.0" encoding="utf-8"?>
<บันทึกข้อผิดพลาด>
<ข้อผิดพลาด>
<วันที่เวลา>วันที่เวลา</วันที่เวลา>
<ชื่อไฟล์>ชื่อไฟล์</ชื่อไฟล์>
<ชื่อคลาส>ชื่อคลาส</ชื่อคลาส>
<วิธีการ>ชื่อวิธีการ</วิธีการ>
<errormethod>วิธีการผิดพลาด</errormethod>
<ข้อความ>ข้อความแสดงข้อผิดพลาด</ข้อความ>
<errordetails>รายละเอียดอยู่ที่นี่</errordetails>
<IP>ที่อยู่ IP</IP>
<url>URL</url>
</ข้อผิดพลาด>
</บันทึกข้อผิดพลาด>
2. ออกแบบคลาสการจัดการข้อผิดพลาด: errorHandler.cs วิธีการ WriteError ภายในต้องใช้พารามิเตอร์สองตัว: Exception และ FileName:
errorHandler.cs
ใช้ระบบ;
ใช้ System.Collections.Generic;
ใช้ System.Text;
ใช้ System.Xml;
โดยใช้ System.Reflection;
โดยใช้ระบบการวินิจฉัย
เนมสเปซ code_center
-
errorHandler คลาสสาธารณะ
-
สตริง _strErrorMessage, _strDetails, _strClassName, _strMethodName;
DateTime _dtOccuranceTime = DateTime ใหม่ ();
errorHandler สาธารณะ ()
-
-
errorHandler สาธารณะ (เวลา DateTime, className สตริง, methodName สตริง,
ข้อความแสดงข้อผิดพลาดของสตริง รายละเอียดสตริง)
-
_dtOccuranceTime = เวลา;
_strClassName = ชื่อคลาส;
_strDetails = รายละเอียด;
_strErrorMessage = ข้อความผิดพลาด;
_strMethodName = ชื่อวิธีการ;
-
โมฆะสาธารณะคง WriteError (ข้อยกเว้นเช่น)
-
WriteError(เช่น "");
-
โมฆะคงสาธารณะ WriteError (ข้อยกเว้น เช่น ชื่อไฟล์สตริง)
-
เอกสาร XmlDocument = XmlDocument ใหม่();
สตริง strRootPath =
System.Configuration.ConfigurationManager.AppSettings ["logfilepath"].ToString();
string xmlPath = System.Web.HttpContext.Current.Server.MapPath(strRootPath);
doc.Load(@xmlPath);
XmlNode ใหม่XMLNode, oldXMLNode;
oldXMLNode = doc.ChildNodes[1].ChildNodes[0];
newXMLNode = oldXMLNode.CloneNode (จริง);
StackTrace stackTrace = StackTrace ใหม่ ();
StackFrame stackFrame = stackTrace.GetFrame (1);
MethodBase 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 = อดีตข้อความ;
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.บันทึก(@xmlPath);
doc.RemoveAll();
-
-
-
3. เพิ่มใน Web.config:
<การตั้งค่าแอป>
<เพิ่มคีย์ =ค่า logfilepath"="~/errorHandling/errorlog.xml"/>
</การตั้งค่าแอป>
4. การทดสอบ: เพิ่มโค้ดทดสอบสองชิ้นลงในเว็บไซต์ของคุณ
1. ใน Page_Load:
หน้า_โหลด
คลาสสาธารณะบางส่วน _Default: System.Web.UI.Page
-
โมฆะที่ได้รับการป้องกัน Page_Load (ผู้ส่งวัตถุ EventArgs e)
-
พยายาม
-
โยนข้อยกเว้นใหม่ ("ข้อผิดพลาดที่กำหนดเอง");
-
catch (ข้อยกเว้น เช่น)
-
Response.Write (เช่น ข้อความ);
kirin.errorHandler.WriteError (เช่น "Default.aspx.cs");
-
-
-
2. เพิ่ม: ไปที่ Application_Error:
เป็นโมฆะ Application_Error (ผู้ส่งวัตถุ EventArgs e)
-
code_center.errorHandler.WriteError (Server.GetLastError().GetBaseException()
"Global.asax");
-
3. ผลลัพธ์ข้อยกเว้น Page_Load:
errorXML
<ข้อผิดพลาด>
<วันที่และเวลา>2010-1-29 9:29:24</datetime>
<ชื่อไฟล์>Default.aspx.vb</ชื่อไฟล์>
<classname>คิริน._Default</classname>
<methodname>Page_Load</methodname>
<errormethod>Page_Load</errormethod>
<message>ข้อผิดพลาดที่กำหนดเอง</messsage>
<errordetails> ใน kirin._Default.Page_Load (ผู้ส่งวัตถุ EventArgs e) ตำแหน่ง C:Demokirin_code_centerkirinDefault.aspx.cs: หมายเลขบรรทัด 16</errordetails>
<ไอพี>127.0.0.1</ไอพี>
<url>http://localhost:2192/default.aspx</url>
</ข้อผิดพลาด>
5. รหัสที่สมบูรณ์:/Files/zhuqil/kirin_errorHandler.rar
ผู้แต่ง: Zhu Qilin ที่มา: http://zhuqil.cnblogs.com
ลิขสิทธิ์ของบทความนี้เป็นของผู้เขียนและ Blog Park อย่างไรก็ตาม จะต้องคงข้อความนี้ไว้โดยไม่ได้รับความยินยอมจากผู้เขียน และต้องระบุลิงก์ไปยังข้อความต้นฉบับในตำแหน่งที่ชัดเจนในหน้าบทความ สงวนสิทธิ์ในการดำเนินการรับผิดทางกฎหมาย