1. Concevez du XML, qui doit contenir les informations suivantes :
1. Datetime : la date et l'heure auxquelles l'erreur/exception s'est produite
2. Nom du fichier : le nom du fichier où l'erreur/exception s'est produite
3. Nom de la classe : le nom de la classe où l'erreur/exception s'est produite
4. Nom de la méthode : le nom de la méthode dans laquelle l'erreur/exception s'est produite
5. Méthode d'erreur : nom de la fonction contenant le code d'erreur
6. Message : informations sur les erreurs/exceptions
7. Détails de l'erreur : détails de l'erreur/exception
8. IP : adresse IP du client
9. URL : URL où l'erreur s'est produite
DémoXML :
DémoXML
<?xml version="1.0" encoding="utf-8"?>
<journal des erreurs>
<erreur>
<datetime>dateheure</datetime>
<nom de fichier>nom de fichier</nom de fichier>
<nom de classe>nom de classe</nom de classe>
<nom de la méthode>nom de la méthode</nom de la méthode>
<méthode d'erreur>méthode d'erreur</méthode d'erreur>
<messsage>Message d'erreur</messsage>
<errordetails>Les détails vont ici</errordetails>
<IP>Adresse IP</IP>
<url>URL</url>
</erreur>
</log d'erreur>
2. Concevez la classe de gestion des erreurs : errorHandler.cs. La méthode WriteError à l'intérieur nécessite deux paramètres : Exception et FileName :
errorHandler.cs
utiliser le système ;
en utilisant System.Collections.Generic ;
en utilisant System.Text ;
en utilisant System.Xml ;
en utilisant System.Reflection ;
en utilisant System.Diagnostics ;
espace de noms code_center
{
gestionnaire d'erreurs de classe publique
{
chaîne _strErrorMessage, _strDetails, _strClassName, _strMethodName ;
DateTime _dtOccuranceTime = new DateTime();
gestionnaire d'erreur public()
{
}
public errorHandler (heure DateTime, chaîne nom de classe, chaîne nom de méthode,
chaîne errorMessage, détails de la chaîne)
{
_dtOccuranceTime = heure ;
_strClassName = nom de classe ;
_strDetails = détails ;
_strErrorMessage = message d'erreur ;
_strMethodName = nomdeméthode ;
}
public static void WriteError (Exception ex)
{
WriteError(ex, "");
}
public static void WriteError (Exception ex, chaîne fileName)
{
XmlDocument doc = new XmlDocument();
chaîne strRootPath =
System.Configuration.ConfigurationManager.AppSettings["logfilepath"].ToString();
chaîne 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();
}
}
}
3. Ajoutez Web.config :
<paramètres de l'application>
<add key="logfilepath" value="~/errorHandling/errorlog.xml"/>
</appSettings>
4. Test : ajoutez deux morceaux de code de test à votre site Web
1. Dans Page_Load :
Chargement_page
classe partielle publique _Default : System.Web.UI.Page
{
protected void Page_Load (expéditeur de l'objet, EventArgs e)
{
essayer
{
throw new Exception("Erreur personnalisée");
}
attraper (Exception ex)
{
Response.Write (ex.Message);
kirin.errorHandler.WriteError(ex, "Default.aspx.cs");
}
}
}
2. Ajoutez : à Application_Error :
void Application_Error (expéditeur de l'objet, EventArgs e)
{
code_center.errorHandler.WriteError(Server.GetLastError().GetBaseException(),
"Global.asax");
}
3. Résultats de l'exception Page_Load :
erreurXML
<erreur>
<datetime>29/01/2010 9:29:24</datetime>
<filename>Default.aspx.vb</filename>
<classname>kirin._Default</classname>
<nom de la méthode>Page_Load</nom de la méthode>
<méthode d'erreur>Page_Load</méthode d'erreur>
<messsage>Erreur personnalisée</messsage>
<errordetails> Dans l'emplacement kirin._Default.Page_Load (Object sender, EventArgs e) C:Demokirin_code_centerkirinDefault.aspx.cs : numéro de ligne 16</errordetails>
<IP>127.0.0.1</IP>
<url>http://localhost:2192/default.aspx</url>
</erreur>
5. Code complet :/Files/zhuqil/kirin_errorHandler.rar
Auteur : Zhu Qilin Source : http://zhuqil.cnblogs.com
Le droit d'auteur de cet article appartient à l'auteur et à Blog Park. La réimpression est la bienvenue. Cependant, cette déclaration doit être conservée sans le consentement de l'auteur et un lien vers le texte original doit être fourni à un endroit évident sur la page de l'article. le droit de poursuivre la responsabilité juridique est réservé.