En esta oportunidad vamos a ver como crear una clase que nos permita gestionar errores y crear un fichero que sea guardado en un log.
Debemos agregar las siguientes referencias
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.IO;
using System.Diagnostics;
public class ELog
{
public static void save(object obj, Exception ex)
{
string fecha = System.DateTime.Now.ToString("yyyyMMdd");
string hora = System.DateTime.Now.ToString("HH:mm:ss");
string path = HttpContext.Current.Request.MapPath("~/log/" + fecha + ".txt");
StreamWriter sw = new StreamWriter(path, true);
StackTrace stacktrace = new StackTrace();
sw.WriteLine(obj.GetType().FullName + " " + hora);
sw.WriteLine(stacktrace.GetFrame(1).GetMethod().Name + " - " + ex.Message);
sw.WriteLine("");
sw.Flush();
sw.Close();
}
}
Esta clase ELog tiene un método save el cual nos indica que debemos enviarle un object y la exception ocurrida. Explicamos el primer parámetro le diremos en que Clase ocurrió el error, y en el otro obtendremos el detalle del error.
Importante: en la raíz de nuestro proyecto debemos agregar una carpeta llamada log.
Ejemplo:
class ProductoModel
{
public List Listar()
{
try
{
// Mi lógica
}
catch(Exception e)
{
ELog.save(this, e);
}
}
}
Por lo tanto en el bloque catch le estoy indicando que si sucede algún error, que envié primero la instancia de la clase actual, y como siguiente parámetro la exception mostrando un error parecido a esto.
ProductoModel 23:25:00
Listar – Ocurrio un error de sintaxis en la base de datos.