[Ejemplo] Usando la API Apache Log4Net

Estaba dando mantenimiento a un proyecto que fue desarrollado con Java (Struts), y en el  código vi el uso de la API Apache Logging Services, puntualmente log4j, para registrar información de rastreo en un archivo.

Pero también hay una versión .Net de esta API: Log4net. Existen muchos otras APIs similares, hay para todos los gustos y colores. En esta entada mostraremos como usar la mencionada API:

Después de descargar Log4Net, y extraer el contenido hacemos lo siguiente:

1. Agregamos la referencia a nuestro proyecto (VS2005, VS2008, VS2010):

 

2. Configuramos que tipo de proveedor vamos a usar para guardar la información, puede ser un archivo de texto, SQL Server, Oracle, enviar emails, entre otros. Son dos partes principales: la declaración de la sección, y la definición de la sección misma. Si queremos agregar proveedores usamos el elemento appender:

   1: <?xml version="1.0"?>
   2: <configuration>
   3:   <configSections>
   4:     <section name="log4net" 
   5:              type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />    
   6:   </configSections>
   7:   <log4net>  
   8:     <root>
   9:       <level value="ALL"/>
  10:       <appender-ref ref="AdoNetAppender" />
  11:     </root>
  12:     <appender name="FileAppender" 
  13:          type="log4net.appender.FileAppender">...</appender>
  14:     <appender name="AdoNetAppender" 
  15:         type="log4net.Appender.AdoNetAppender">...</appender>    
  16:   </log4net>  
  17: </configuration>

3. Escribimos el código para guardar los mensajes:

   1: class Program
   2:   {
   3:  
   4:     static void ConfigureLog()
   5:     {
   6:       //Configurar Log, de acuerdo a la archivo app.config
   7:       log4net.Config.XmlConfigurator.Configure();          
   8:     }
   9:  
  10:     static void Main(string[] args)
  11:     {
  12:       //SET UP, Configure Log
  13:       ConfigureLog();
  14:  
  15:       log4net.ILog logger = log4net.LogManager.GetLogger(typeof(Program));
  16:  
  17:       logger.Debug("Here is a debug log.");
  18:       logger.Info("... and an Info log.");
  19:       logger.Warn("... and a warning.");
  20:       logger.Error("... and an error.");
  21:       logger.Fatal("... and a fatal error.");
  22:  
  23:       Console.WriteLine("END --- PRESS ENTER");
  24:       Console.ReadLine();
  25:     }    
  26:   }

4. Log en archivo de texto: , Log en Base de datos:

 

Nota: Para el tipo FileAppender, podemos establecer el patrón de como se guardará la información:

   1: <appender name="FileAppender" type="log4net.appender.FileAppender">
   2:    <param name="File" value="C:\temp\miPrimerLog4Net.txt" />
   3:    <param name="AppendToFile" value="true" />
   4:    <layout type="log4net.Layout.PatternLayout">
   5:      <param name="ConversionPattern" value="%d [%t] %-2p %c [%x] - %m%n" />
   6:    </layout>
   7: </appender>

¿Ustedes qué usan para el Logging, alguna API pública o tienen sus propias clases?

Enlaces relacionados:

Saludos,

Published 16/9/2010 17:09 por Sergio Tarrillo
Archivado en: ,,
Comparte este post:
http://geeks.ms/blogs/sergiotarrillo/archive/2010/09/16/ejemplo-usando-la-api-apache-log4net.aspx

Comentarios

# re: [Ejemplo] Usando la API Apache Log4Net

Con la potencia que actualmente tiene System.Diagnostics usar Log4net en una aplicación debería estár penado.

Un saludo.

Friday, September 17, 2010 2:54 PM por Rodrigo Corral