Para implementar un sistema de trazabilidad que genere archivos de registro rotativos basados en la fecha utilizando Log4net, es fundamental comprender la ubicación del archivo de configuración. Si la implementación se realiza dentro de una biblioteca de clases, el archivo de configuración debe residir en el proyecto ejecutable que la consume. Para aplicaciones de consola o Windows Forms, este archivo debe situarse en el directorio de salida (por ejemplo, bin/Debug/).
1. Intgeración de la biblioteca
Agregue la referencia a log4net.dll mediante el gestor de paquetes NuGet o mediante una referencia directa al ensamblado en su proyecto.
2. Inicialización del configurador
En el archivo AssemblyInfo.cs (o en el punto de entrada de la aplicación para proyectos modernos), registre el observador de configuración XML para que el framwork cargue los parámetros al iniciar:
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
3. Definición del archivo de configuración
Cree el archivo log4net.config en la raíz del proyecto. A continuación, se muestra una configurcaión optimizada que separa los registros de errores e información en diferentes directorios, rotando los archivos diariamente y corrigiendo prácticas comunes de niveles de severidad:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<log4net>
<!-- Appender para registros de nivel Error -->
<appender name="ErrorFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="logs/errors/" />
<appendToFile value="true" />
<staticLogFileName value="false" />
<rollingStyle value="Date" />
<datePattern value="yyyyMMdd'.txt'" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="[%date] %level - %message%newline" />
</layout>
</appender>
<logger name="ErrorLogger" additivity="false">
<level value="ERROR" />
<appender-ref ref="ErrorFileAppender" />
</logger>
<!-- Appender para registros de nivel Info -->
<appender name="InfoFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="logs/info/" />
<appendToFile value="true" />
<staticLogFileName value="false" />
<rollingStyle value="Date" />
<datePattern value="yyyyMMdd'.txt'" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="[%date] %level - %message%newline" />
</layout>
</appender>
<logger name="InfoLogger" additivity="false">
<level value="INFO" />
<appender-ref ref="InfoFileAppender" />
</logger>
</log4net>
</configuration>
4. Invocación en el código fuente
Para utilizar los loggers configurados, obtenga una instancia a través del LogManager y ejecute los métodos de registro correspondientes según el nivel de severidad:
using log4net;
using System;
public class ServiceMonitor
{
// Instanciación de los loggers definidos en el XML
private static readonly ILog errorLog = LogManager.GetLogger("ErrorLogger");
private static readonly ILog infoLog = LogManager.GetLogger("InfoLogger");
public void ExecuteProcess()
{
infoLog.Info("El proceso de monitoreo ha iniciado correctamente.");
try
{
// Lógica de negocio simulada
throw new InvalidOperationException("Fallo de conexión a la base de datos.");
}
catch (Exception ex)
{
errorLog.Error("Se produjo un fallo durante la ejecución del proceso.", ex);
}
}
}