网站导航网学 原创论文 原创专题 网站设计 最新系统 原创论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 设计资源 > .Net编程 > 正文

简单的自定义错误跟踪【附示例代码】

论文降重修改服务、格式排版等 获取论文 论文降重及排版 论文发表 相关服务

一、设计xml,应该包含下面信息:【示例代码】

1、Datetime: 发生错误/异常的日期和时间
2、File name: 发生错误/异常的文件名
3、Class name : 发生错误/异常的类名
4、Methodname: 发生错误/异常的方法名
5、Errormethod : 包含错误代码的函数名字
6、Message :错误/异常的信息
7、Error details: 错误/异常详情
8、IP : 客户端IP地址
9、URL : 发生错误的URL

DemoXML:

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <errorlog> 
  3.   <error> 
  4.     <datetime>datetime</datetime> 
  5.     <filename>filename</filename> 
  6.     <classname>classname</classname> 
  7.     <methodname>methodname</methodname> 
  8.     <errormethod>errormethod</errormethod> 
  9.     <messsage>ErrorMessage</messsage> 
  10.     <errordetails>Details goes here</errordetails> 
  11.     <IP>IP adress</IP> 
  12.     <url>URL</url> 
  13.   </error> 
  14. </errorlog> 

二、设计错误处理类:errorHandler.cs,里面的WriteError方法需要Exception和FileName两个参数:

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Text;  
  4. using System.Xml;  
  5. using System.Reflection;  
  6. using System.Diagnostics;  
  7. namespace code_center  
  8. {  
  9.     public class errorHandler  
  10.     {  
  11.         string _strErrorMessage, _strDetails, _strClassName, _strMethodName;  
  12.         DateTime _dtOccuranceTime = new DateTime();  
  13.         public errorHandler()  
  14.         {  
  15.         }  
  16.         public errorHandler(DateTime time, string className, string methodName, 
  17.             string errorMessage, string details)  
  18.         {  
  19.             _dtOccuranceTime = time;  
  20.             _strClassName = className;  
  21.             _strDetails = details;  
  22.             _strErrorMessage = errorMessage;  
  23.             _strMethodName = methodName;  
  24.         }  
  25.         public static void WriteError(Exception ex)  
  26.         {  
  27.             WriteError(ex, "");  
  28.         }  
  29.         public static void WriteError(Exception ex, string fileName)  
  30.         {  
  31.             XmlDocument doc = new XmlDocument();  
  32.             string strRootPath = 
  33.            System.Configuration.ConfigurationManager.AppSettings["logfilepath"].ToString();  
  34.             string xmlPath = System.Web.HttpContext.Current.Server.MapPath(strRootPath);  
  35.             doc.Load(@xmlPath);  
  36.             XmlNode newXMLNode, oldXMLNode;  
  37.             oldXMLNode = doc.ChildNodes.ChildNodes[0];  
  38.             newXMLNode = oldXMLNode.CloneNode(true);  
  39.             StackTrace stackTrace = new StackTrace();  
  40.             StackFrame stackFrame = stackTrace.GetFrame(1);  
  41.             MethodBase methodBase = stackFrame.GetMethod();  
  42.             newXMLNode.ChildNodes[0].InnerText = DateTime.Now.ToString();  
  43.             newXMLNode.ChildNodes.InnerText = fileName;  
  44.             newXMLNode.ChildNodes.InnerText = methodBase.DeclaringType.FullName;  
  45.             newXMLNode.ChildNodes.InnerText = methodBase.Name;  
  46.             newXMLNode.ChildNodes.InnerText = ex.TargetSite.Name;  
  47.             newXMLNode.ChildNodes.InnerText = ex.Message;  
  48.             newXMLNode.ChildNodes.InnerText = ex.StackTrace;  
  49.             newXMLNode.ChildNodes.InnerText = System.Web.HttpContext.Current.Request.UserHostAddress;  
  50.             newXMLNode.ChildNodes.InnerText = System.Web.HttpContext.Current.Request.Url.OriginalString;  
  51.             doc.ChildNodes.AppendChild(newXMLNode);  
  52.             doc.Save(@xmlPath);  
  53.             doc.RemoveAll();  
  54.         }  
  55.     }  
  56. }  

三、 在Web.config加入:

  1. <appSettings> 
  2.         <add key="logfilepath" value="~/errorHandling/errorlog.xml"/> 
  3.     </appSettings> 

四、测试:在你的网站中加入两段测试代码

1、在Page_Load:

  1. public partial class _Default : System.Web.UI.Page 
  2.     { 
  3.         protected void Page_Load(object sender, EventArgs e) 
  4.         { 
  5.             try 
  6.             { 
  7.                 throw new Exception("Custom error"); 
  8.             } 
  9.             catch (Exception ex) 
  10.             { 
  11.                 Response.Write(ex.Message); 
  12.                 kirin.errorHandler.WriteError(ex, "Default.aspx.cs"); 
  13.             } 
  14.         }  
  15.     } 

2、在Application_Error中加入:

  1. void Application_Error(object sender, EventArgs e)  
  2.     {  
  3.         code_center.errorHandler.WriteError(Server.GetLastError().GetBaseException(), 
  4.             "Global.asax");  
  5.     }  

3、Page_Load异常的结果:errorXML.xml

  1. <error> 
  2.     <datetime>2010-1-29 9:29:24</datetime> 
  3.     <filename>Default.aspx.vb</filename> 
  4.     <classname>kirin._Default</classname> 
  5.     <methodname>Page_Load</methodname> 
  6.     <errormethod>Page_Load</errormethod> 
  7.     <messsage>Custom error</messsage> 
  8.     <errordetails>   在 kirin._Default.Page_Load(Object sender, EventArgs e) 位置 C:\Demo\kirin_code_center\kirin\Default.aspx.cs:行号 16</errordetails> 
  9.     <IP>127.0.0.1</IP> 
  10.     <url>http://localhost:2192/default.aspx</url> 
  • 下一篇资讯: Asp.net中的常用属性
  • 设为首页 | 加入收藏 | 网学首页 | 原创论文 | 计算机原创
    版权所有 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师