国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

超級簡單:一步一步教你實現簡單的自定義錯誤跟蹤

2019-11-17 03:50:22
字體:
來源:轉載
供稿:網友
一、設計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:

DemoXML
<?xml version="1.0" encoding="utf-8"?>
<errorlog>
  <error>
    <datetime>datetime</datetime>
    <filename>filename</filename>
    <classname>classname</classname>
    <methodname>methodname</methodname>
    <errormethod>errormethod</errormethod>
    <messsage>ErrorMessage</messsage>
    <errordetails>Details goes here</errordetails>
    <IP>IP adress</IP>
    <url>URL</url>
  </error>
</errorlog>
二、設計錯誤處理類:errorHandler.cs,里面的WriteError方法需要Exception和FileName兩個參數:

errorHandler.cs
using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;
using System.Reflection;
using System.Diagnostics;
namespace code_center
{
    public class errorHandler
    {
        string _strErrorMessage, _strDetails, _strClassName, _strMethodName;
        DateTime _dtOccuranceTime = new DateTime();
        public errorHandler()
        {
        }
        public errorHandler(DateTime time, string className, string methodName,
            string errorMessage, string details)
        {
            _dtOccuranceTime = time;
            _strClassName = className;
            _strDetails = details;
            _strErrorMessage = errorMessage;
            _strMethodName = methodName;
        }
        public static void WriteError(Exception ex)
        {
            WriteError(ex, "");
        }
        public static void WriteError(Exception ex, string fileName)
        {
            XmlDocument doc = new XmlDocument();
            string strRootPath =
           System.Configuration.ConfigurationManager.AppSettings["logfilepath"].ToString();
            string 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 stackTrace = new StackTrace();
            StackFrame stackFrame = stackTrace.GetFrame(1);
            MethodBase methodBase = stackFrame.GetMethod();
            newXMLNode.ChildNodes[0].InnerText = DateTime.Now.ToString();
            newXMLNode.ChildNodes[1].InnerText = fileName;
            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();
        }
    }
}
三、 在Web.config加入:

    <appSettings>
        <add key="logfilepath" value="~/errorHandling/errorlog.xml"/>
    </appSettings>
四、測試:在你的網站中加入兩段測試代碼

1、在Page_Load:

Page_Load
    public partial class _Default : System.Web.UI.Page
    {
        PRotected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                throw new Exception("Custom error");
            }
            catch (Exception ex)
            {
                Response.Write(ex.Message);
                kirin.errorHandler.WriteError(ex, "Default.aspx.cs");
            }
        }
    }
2、在application_Error中加入:

    void Application_Error(object sender, EventArgs e)
    {
        code_center.errorHandler.WriteError(Server.GetLastError().GetBaseException(),
            "Global.asax");
    }
3、Page_Load異常的結果:

errorXML
  <error>
    <datetime>2010-1-29 9:29:24</datetime>
    <filename>Default.aspx.vb</filename>
    <classname>kirin._Default</classname>
    <methodname>Page_Load</methodname>
    <errormethod>Page_Load</errormethod>
    <messsage>Custom error</messsage>
    <errordetails>   在 kirin._Default.Page_Load(Object sender, EventArgs e) 位置 C:/Demo/kirin_code_center/kirin/Default.aspx.cs:行號 16</errordetails>
    <IP>127.0.0.1</IP>
    <url>http://localhost:2192/default.aspx</url>
</error>
五、完整代碼:/Files/zhuqil/kirin_errorHandler.rar

作者:朱祁林
出處:http://zhuqil.VEVb.com
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 孟津县| 太谷县| 黑龙江省| 青岛市| 郴州市| 泸溪县| 石棉县| 化德县| 金昌市| 安泽县| 平潭县| 碌曲县| 五台县| 沛县| 哈巴河县| 都江堰市| 柞水县| 中西区| 峨眉山市| 鸡西市| 彰化市| 开化县| 和龙市| 莫力| 临澧县| 葫芦岛市| 岑巩县| 赤壁市| 建始县| 安龙县| 湟源县| 海丰县| 定安县| 巧家县| 临汾市| 襄城县| 吉隆县| 彰武县| 绵竹市| 肇东市| 克东县|