Integración de Log4net para Registro de Eventos en Aplicaciones .NET

Este artículo detalla el proceso de configuración y uso de la biblioteca Log4net para implementar un sistema robusto de registro de eventos en aplicaciones .NET.

  1. Obtención y Referencia de Log4net

El primer paso consiste en descargar el ansamblado log4net.dll. Una vez obtenido, se debe agregar como una referencia al proyecto de Visual Studio.

  1. Implementación en Código

A continuación, se presenta un ejemplo de cómo integrar Log4net en una aplicación web ASP.NET para registrar diferentes niveles de mensajes:


using System;
using System.Reflection;
using log4net;

namespace MiAplicacionWeb
{
   public partial class PaginaEjemplo : System.Web.UI.Page
   {
       // Obtener una instancia del logger para la clase actual
       private static readonly ILog Logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);

       protected void Page_Load(object sender, EventArgs e)
       {
           RegistrarEventos();
       }

       private void RegistrarEventos()
       {
           try
           {
               // Simular una operación que podría fallar
               throw new InvalidOperationException("Simulación de un problema operativo.");
           }
           catch (Exception ex)
           {
               // Registro de errores graves
               Logger.Error("Ocurrió un error durante la operación.", ex);
               // Registro de eventos fatales
               Logger.Fatal("Fallo crítico en el sistema.", ex);
           }

           // Registro de información general
           Logger.Info("Proceso de carga de página completado exitosamente.");
           // Registro de información para depuración
           Logger.Debug("Detalles de depuración para la carga de la página.");
           // Registro de advertencias
           Logger.Warn("Advertencia: Se detectó una condición inusual.");
       }
   }
}
 
  1. Configuración del Archivo de Configuración

Para que Log4net funcione, es necesario definir su comportamiento en un archivo de configuración. Este puede ser el Web.config o un archivo dedicado.


<configuration>
 <configSections>
   <section name="log4net" type="log4net.Config.Log4netConfigurationSectionHandler, log4net"/>
 </configSections>

 <log4net>
   
   <root>
     <level value="ALL" />
     <appender-ref ref="AppenderArchivoDiario" />
   </root>

   <!-- Configuración específica para loggers nombrados -->
   <logger name="MiLoggerEspecifico">
     <level value="DEBUG" />
   </logger>

   <!-- Appender para escribir en archivos que rotan -->
   <appender name="AppenderArchivoDiario" type="log4net.Appender.RollingFileAppender,log4net" >
     <!-- Directorio donde se guardarán los logs -->
     <param name="File" value="~/App_Data/Logs/" />
     <!-- Asegura que los nuevos logs se añadan al archivo existente -->
     <param name="AppendToFile" value="true" />
     <!-- Estilo de rotación basado en fecha -->
     <param name="RollingStyle" value="Date" />
     <!-- Patrón de nombres de archivo: Logs_AAAA-MM-DD.txt -->
     <param name="DatePattern" value='"Logs_"yyyyMMdd".txt"' />
     <!-- Nombre de archivo estático o dinámico según rotación -->
     <param name="StaticLogFileName" value="false" />
     <!-- Formato del patrón de salida -->
     <layout type="log4net.Layout.PatternLayout,log4net">
       <!-- %d: fecha, %t: hilo, %-5p: nivel (alineado a la izquierda), %c: categoría, %m: mensaje, %n: nueva línea -->
       <param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
       <!-- Cabecera opcional para cada archivo de log -->
       <param name="Header" value="---------------------- INICIO DEL LOG ----------------------
" />
       <!-- Pie de página opcional para cada archivo de log -->
       <param name="Footer" value="---------------------- FIN DEL LOG ----------------------
" />
     </layout>
   </appender>

   <!-- Appender para salida en consola (útil en aplicaciones de consola o depuración) -->
   <appender name="AppenderConsola" type="log4net.Appender.ConsoleAppender,log4net">
     <layout type="log4net.Layout.PatternLayout,log4net">
       <param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
     </layout>
   </appender>
 </log4net>
</configuration>
 
  1. Configuración Independiente con Archivo Externo

Si se prefiere mantener la configuración de Log4net en un archivo separado (por ejemplo, log4net.config), se puede especificar esta opción mediente un atributo a nivel de ensamblado:


[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
 

La opción Watch = true permite que Log4net monitoree el archivo de configuración y recargue automáticamente los cambios sin necesidad de reiniciar la aplicación.

Etiquetas: log4net .NET logging C# configuration

Publicado el 10-30 09:11