1. Diseño xml, que debe contener la siguiente información:
1. Fecha y hora: la fecha y hora en que ocurrió el error/excepción.
2. Nombre del archivo: el nombre del archivo donde ocurrió el error/excepción.
3. Nombre de clase: el nombre de la clase donde ocurrió el error/excepción
4. Nombre del método: el nombre del método donde ocurrió el error/excepción.
5. Método de error: nombre de la función que contiene el código de error
6. Mensaje: información de error/excepción
7. Detalles del error: detalles del error/excepción
8. IP: dirección IP del cliente
9. URL: URL donde ocurrió el error
Demostración XML:
Demostración XML
<?xml versión="1.0" codificación="utf-8"?>
<registro de errores>
<error>
<fechahora>fechahora</fechahora>
<nombre de archivo>nombre de archivo</nombre de archivo>
<nombre de clase>nombre de clase</nombre de clase>
<nombre del método>nombre del método</nombre del método>
<método de error>método de error</método de error>
<message>Mensaje de error</messsage>
<errordetails>Los detalles van aquí</errordetails>
<IP>Dirección IP</IP>
<url>URL</url>
</error>
</errorlog>
2. Diseñe la clase de manejo de errores: errorHandler.cs. El método WriteError interno requiere dos parámetros: excepción y nombre de archivo:
errorHandler.cs
usando Sistema;
usando System.Collections.Generic;
usando System.Text;
usando System.Xml;
usando System.Reflection;
utilizando System.Diagnostics;
espacio de nombres code_center
{
errorHandler de clase pública
{
cadena _strErrorMessage, _strDetails, _strClassName, _strMethodName;
FechaHora _dtOccuranceTime = nueva FechaHora();
manejador de errores público()
{
}
manejador de errores público (fecha, hora, hora, nombre de clase de cadena, nombre de método de cadena,
mensaje de error de cadena, detalles de cadena)
{
_dtOccuranceTime = tiempo;
_strClassName = nombre de clase;
_strDetails = detalles;
_strErrorMessage = mensaje de error;
_strMethodName = nombredelmétodo;
}
WriteError vacío estático público (Excepción ex)
{
WriteError(por ejemplo, "");
}
WriteError vacío estático público (excepción ex, nombre de archivo de cadena)
{
Documento XmlDocument = nuevo XmlDocument();
cadena strRootPath =
System.Configuration.ConfigurationManager.AppSettings["logfilepath"].ToString();
cadena xmlPath = System.Web.HttpContext.Current.Server.MapPath(strRootPath);
doc.Cargar(@xmlPath);
XmlNode nuevoXMLNode, antiguoXMLNode;
oldXMLNode = doc.ChildNodes[1].ChildNodes[0];
newXMLNode = oldXMLNode.CloneNode(verdadero);
StackTrace stackTrace = nuevo StackTrace();
StackFrame stackFrame = stackTrace.GetFrame(1);
MethodBase métodoBase = stackFrame.GetMethod();
newXMLNode.ChildNodes[0].InnerText = DateTime.Now.ToString();
newXMLNode.ChildNodes[1].InnerText = nombredearchivo;
newXMLNode.ChildNodes[2].InnerText = métodoBase.DeclaringType.FullName;
newXMLNode.ChildNodes[3].InnerText = métodoBase.Nombre;
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.Guardar(@xmlPath);
doc.RemoveAll();
}
}
}
3. Agregue Web.config:
<configuración de la aplicación>
<agregar clave="logfilepath" valor="~/errorHandling/errorlog.xml"/>
</aplicaciónConfiguración>
4. Prueba: agregue dos fragmentos de código de prueba a su sitio web
1. En Page_Load:
Carga_página
clase parcial pública _Default: System.Web.UI.Page
{
Page_Load vacío protegido (remitente del objeto, EventArgs e)
{
intentar
{
lanzar una nueva excepción ("Error personalizado");
}
captura (Excepción ex)
{
Respuesta.Escribir(ex.Mensaje);
kirin.errorHandler.WriteError (por ejemplo, "Default.aspx.cs");
}
}
}
2. Agregue: a Application_Error:
void Application_Error (remitente del objeto, EventArgs e)
{
code_center.errorHandler.WriteError(Server.GetLastError().GetBaseException(),
"Global.asax");
}
3. Resultados de la excepción Page_Load:
errorXML
<error>
<fecha y hora>2010-1-29 9:29:24</fecha y hora>
<nombre de archivo>Predeterminado.aspx.vb</nombre de archivo>
<nombre de clase>kirin._Default</nombre de clase>
<nombre del método>Carga de página</nombre del método>
<método de error>Carga de página</método de error>
<messsage>Error personalizado</messsage>
<errordetails> En kirin._Default.Page_Load(Object sender, EventArgs e) ubicación C:Demokirin_code_centerkirinDefault.aspx.cs: línea número 16</errordetails>
<IP>127.0.0.1</IP>
<url>http://localhost:2192/default.aspx</url>
</error>
5. Código completo:/Files/zhuqil/kirin_errorHandler.rar
Autor: Zhu Qilin Fuente: http://zhuqil.cnblogs.com
Los derechos de autor de este artículo pertenecen al autor y Blog Park es bienvenido. Sin embargo, esta declaración debe conservarse sin el consentimiento del autor y se debe proporcionar un enlace al texto original en una posición obvia en la página del artículo. se reserva el derecho de exigir responsabilidad legal.