viernes, 3 de febrero de 2012

Algunos consejos más sobre log4net

Tras escribir el artículo introductorio sobre como trazar nuestras aplicaciones con log4net me di cuenta que podría ser útil comentar algunas cosillas que a mi fueron útiles para dejar la librería funcionando, ya que en las primeras pruebas (como era de suponer) no se registraba nada en la base de datos.

A la hora de crear nuestro logger usaremos un código similar a este
try 
{
  // ... código a trazar ...
}
catch (Exception ex)
{
  // Creamos nuestro logger
  ILogger logger = LogManager.GetLogger("Logger");
  // Cargamos la configuración
  XmlConfigurator.Configure();
  // Registramos nuestra excepción
  Logger.Error(ex.Message, ex);
}
Como vemos usaremos la cadena "Logger" para obtener la instancia a nuestro logger. Bien, este nombre debe ser el que pongamos en nuestro fichero de configuración.
  
    
      
        
        
      
    
      
Si esto no fuera así, log4net no podría cargar el logger correctamente y obtendríamos un error. Una vez que estaba seguro que el logger estaba instanciado correctamente, seguía viendo que no se registraba nada en la base de datos. Tras comprobar que la cadena de conexión era válida, y tras releerme un poco la documentación vi que había una propiedad en el fichero de configuración que se llamaba bufferSize. Esta propiedad como su nombre indica se encarga de guardar los registros hasta que se alcanza un número determinado, momento en el cual envia los registros a la salida configurada, en mi caso, la base de datos. El problema es que en mi caso se escriben sólo las excepciones que produce el programa por lo que tener un bufferSize de 100, me parecía excesivo, así que decidí ponerlo a 0 (sin buffer).
        
      
Con esto ya vi vi como todos los registros se almacenaban correctamente. Pero, ¿y si todo esto falla? Si todo esto falla tenemos otra alternativa y es hacer que el log4net nos informe de los errores que se comentan internamente en la librería. Para lograr esto, debemos añadir esto a nuestro <appsettings>
  
    
  
Para ver los errores en un fichero solo debemos redirigir la salida del TraceListener, por ejemplo, a un fichero de text añadiendo los siguiente a nuestro fichero de configuración
    
    
      
        
      
    
  
Con esto podremos ver la información que nos da log4net en su ejecución y quizá esto nos arroje algo de luz de por qué no se registran nuestros sucesos.

Happy coding!

Más info | Como trazar nuestras aplicaciones con log4net

No hay comentarios:

Publicar un comentario