Otros han publicado buenos enlaces para que funcione el Bloque de aplicaciones de registro (LAB), por lo que no lo duplicaré aquí.
En términos de formato de su excepción que tienen 3 opciones que se me ocurren:
- utilizar la implementación predeterminada
Exception.ToString()
(no está mal)
- para tu dispositivo formateador personalizado que se integra en el laboratorio.
- Escriba una función auxiliar que realiza el formateo y pasa la cadena al método Write.
Si la opción 1 no satisface sus necesidades, entonces recomendaría ir con la opción 3 (ya que la opción 2 es excesiva).
Un ejemplo sencillo sería algo así como:
catch (Exception exception)
{
Logger.Write(LogHelper.CreateExceptionString(exception));
}
...
public static string CreateExceptionString(Exception e)
{
StringBuilder sb = new StringBuilder();
CreateExceptionString(sb, e, String.Empty);
return sb.ToString();
}
private static void CreateExceptionString(StringBuilder sb, Exception e, string indent)
{
if (indent == null)
{
indent = String.Empty;
}
else if (indent.Length > 0)
{
sb.AppendFormat("{0}Inner ", indent);
}
sb.AppendFormat("Exception Found:\n{0}Type: {1}", indent, e.GetType().FullName);
sb.AppendFormat("\n{0}Message: {1}", indent, e.Message);
sb.AppendFormat("\n{0}Source: {1}", indent, e.Source);
sb.AppendFormat("\n{0}Stacktrace: {1}", indent, e.StackTrace);
if (e.InnerException != null)
{
sb.Append("\n");
CreateExceptionString(sb, e.InnerException, indent + " ");
}
}
También es útil incluir el nombre del tipo de excepción. Pero por lo demás es bastante agradable. –
@Andrew: sí o podría agregar algún código para extraer IDictionary de la propiedad Data. –
[Aquí] (http://www.aspsnippets.com/Articles/Create-simple-Error-Log-Text-File-in-ASPNet-using-C-and-VBNet.aspx) es otra ** solución ** . la esperanza ayuda. – stom