Guardar log de nuestros sistemas siempre es muy importante, nos ayudará posteriormente a resolver problemas y conocer sus orígenes, autores y otros. Esto podemos hacer de muchas maneras, en alguna tabla en la base de datos, en un fichero de log, enviando por email, y muchas otras maneras. También podemos almacenarlo en el registro de eventos de Sistema Operativo Windows.
El framework nos facilita ésta tarea, tan sólo se necesita muy poco código para lograr este cometido. Crearemos una pequeña clase que recibirá los parámetros necesarios, y podrá ser invocado desde cualquier lugar.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | using System; using System.Diagnostics; public class EventLogger { public EventLogger() { } private void CrearLog(string str) { if (!EventLog.SourceExists(str)) EventLog.CreateEventSource(str, str); } public void Save(string str, Exception ex) { CrearLog(str); EventLog evento = new EventLog(str); evento.Source = str; evento.WriteEntry(ex.Message, EventLogEntryType.Error); } } |
Una manera tonta de utilizarlo es la siguiente:
1 2 3 4 5 6 7 8 9 10 11 12 13 | protected void metodo(object sender, EventArgs e) { try { int error = 0; int resultado = 5 / error; } catch (Exception ex) { EventLogger ev = new EventLogger(); ev.Save("Devtroce", ex); } } |
En una siguiente entrega veremos como leer este log de eventos y mostrarlos en una aplicación.
Articulos Relacionados:









en
en
en
en
que falta de seriedad este blog choto, como no van a andar los tags..
int num = 666;
probando con corchetes
Chore, tengo que revisar los fuentes ahora
Nahani
byte[] buffer = new byte[512];
no sale!?
sneak test
byte[] buffer = new byte[512];
No anda el <<del> pre lang="csharp" </del>>
Y cerraste el tag con <barra pre> ?
probando tag pre
<pre lang="csharp">
string dev = "troce";
</pre>
Buen articulo, yo comparto una funcioncita con lo que aprendimos aqui en el post que uso en mis WebApp para loguearme los deslices que tenemos:
<pre lang="csharp">
static public bool Manejador_de_Excepciones(string miApp, Exception myError)
{
try
{
string eventLog = miApp + "_Excepciones";
string eventSource = miApp;
string myErrorMessage = String.Empty;
myErrorMessage += "Mensaje:" + Environment.NewLine +
myError.Message.ToString() + Environment.NewLine + Environment.NewLine;
myErrorMessage += "Origen" + Environment.NewLine +
myError.Source + Environment.NewLine + Environment.NewLine;
myErrorMessage += "Stack trace" + Environment.NewLine +
myError.StackTrace + Environment.NewLine + Environment.NewLine;
myErrorMessage += "Target site" + Environment.NewLine +
myError.TargetSite.ToString() + Environment.NewLine + Environment.NewLine;
//Si nuestra excepcion es producida dentro de otra.
while (myError.InnerException != null)
{
myErrorMessage += "Stack trace" + Environment.NewLine +
myError.StackTrace + Environment.NewLine + Environment.NewLine;
myErrorMessage += "Mensaje" + Environment.NewLine +
myError.Message.ToString() + Environment.NewLine + Environment.NewLine;
myErrorMessage += "Origen" + Environment.NewLine +
myError.Source + Environment.NewLine + Environment.NewLine;
myErrorMessage += "Target site" + Environment.NewLine +
myError.TargetSite.ToString() + Environment.NewLine + Environment.NewLine;
myError = myError.InnerException;
}
// Asegurate que nuestro EventLog exista, sino lo creamos
if (!EventLog.SourceExists(eventLog))
EventLog.CreateEventSource(eventSource, eventLog);
// Crea una instancia de nuestro EventLog y asignamos a nuestro 'Source'.
EventLog myLog = new EventLog(eventLog);
myLog.Source = eventSource;
// Write the error entry to the event log.
myLog.WriteEntry("Error ocurrido en : "
+ eventSource + Environment.NewLine + myErrorMessage,
EventLogEntryType.Error);
return true;
}
catch (Exception ERROR) // OMGCat si caemos aca jajajaja
{
Console.WriteLine("Mensaje de Error:{0}", ERROR.ToString()); //Si tenemos consola
Debug.WriteLine("Mensaje de Error:{0}", ERROR.ToString()); //Esto imprime si estas debugeando en tu VS
//Podriamos loguear en un archivo de texto
return false;
}
}
</pre>
Espero les sirva, un saludo
Gracias por el aporte
PD: mato el comentario OMGCat