Introducción e instalación

Introducción

  1. Definición
    Log4net = Log for .NET, es la versión portada oficial de Apache Log4j (famosa biblioteca de registros para Java) para la plataforma .NET, una biblioteca madura de código abierto orientada al registro de logs.
  2. Función principal
    Una vez integrada en tu proyecto, no tienes que programar manualmente la lógica de lectura y escritura de archivos. Genera rápidamente registros de aplicación para guardar información de ejecución y trazas de excepción, facilitando la depuración y resolución de incidencias en entorno de producción.
  3. Relación entre términos
  • Log4j: Componente histórico de registro para el ecosistema Java
  • Log4net: Versión adaptada de Log4j para C#/.NET

Instalación

Para proyectos .NET modernos se recomienda instalar mediante NuGet:

dotnet add package log4net

Desde Visual Studio puedes buscar directamente log4net en «Administrar paquetes NuGet» e instalarlo con un clic.

Antiguamente log4net se instalaba descargando manualmente el archivo dll. Hoy en día NuGet es el método estándar.

Configuración del entorno Log4Net

log4net sirve para cualquier tipo de proyecto: aplicaciones de consola, escritorio o aplicaciones web.

Procedimiento de uso

Paso 1: modificar Web.config y añadir la configuración de log4net
<?xml version="1.0"?>
<configuration>
  <configSections>
    <!-- Registrar la sección de configuración log4net -->
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>

  <log4net>
    <!-- Appender de archivo con rotación por fecha -->
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
      <!-- Ruta de almacenamiento de logs: usa rutas relativas, evita rutas absolutas fijas de memorias USB -->
      <param name="File" value="logs\\"/>
      <!-- Modo añadir: true = añadir registros, false = vaciar el archivo en cada arranque -->
      <param name="AppendToFile" value="true"/>
      <!-- Cantidad máxima de archivos de log conservados -->
      <param name="MaxSizeRollBackups" value="10"/>
      <!-- Nombre de archivo falso false = generar archivos distintos por fecha -->
      <param name="StaticLogFileName" value="false"/>
      <!-- Patrón de nombre de archivo -->
      <param name="DatePattern" value="yyyy-MM-dd&quot;.log&quot;"/>
      <!-- Estrategia de rotación: Date = dividir logs por fecha -->
      <param name="RollingStyle" value="Date"/>

      <!-- Plantilla de formato de salida de registros -->
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
        <!-- ❗La plantilla antigua contenía %loggername sobrante que generaba texto redundante al final del registro, eliminado -->
      </layout>
    </appender>

    <!-- Configuración raíz de logs, válida para toda la aplicación -->
    <root>
      <!-- Nivel de registro all: mostrar todos los niveles; valores disponibles: DEBUG/INFO/WARN/ERROR/FATAL/OFF -->
      <level value="all"/>
      <!-- Asociar el appender definido anteriormente -->
      <appender-ref ref="RollingLogFileAppender"/>
    </root>
  </log4net>
</configuration>Lenguaje del código: HTML, XML (xml)
  1. No utilices rutas absolutas fijas como G:\xxx, dejan de funcionar al desplegar en servidor. Usa la ruta relativa logs\\;
  2. En entornos de producción ajusta el parámetro level a INFO o ERROR, para evitar que demasiados registros DEBUG consuman espacio en disco.
Paso 2: inicializar Log4Net de forma global

Añade el código de inicialización dentro del método Application_Start de Global.asax, la configuración se carga cuando arranca la aplicación

protected void Application_Start(object sender, EventArgs e)
{
    // Inicializar log4net, leer configuración de Web.config
    log4net.Config.XmlConfigurator.Configure();
}Lenguaje del código: JavaScript (javascript)

Atención: sin esta línea no se generarán archivos de log aunque llames a los métodos de registro. Es un error muy habitual.

Paso 3: obtener el Logger y escribir registros en las páginas

Escribe el código de llamada en Default.aspx.cs. El código puede colocarse en cualquier lugar, este ejemplo muestra una página de demostración.

using log4net;

public partial class _Default : System.Web.UI.Page
{
    // Obtener instancia de registro, la cadena es el nombre personalizado del logger
    public static readonly ILog log = LogManager.GetLogger("logger-name");

    protected void Page_Load(object sender, EventArgs e)
    {
        log.Info("Registro ordinario");
        log.Error("Registro de error");
        // Otros niveles soportados
        // log.Debug("Registro de depuración");
        // log.Warn("Registro de advertencia");
        // log.Fatal("Registro de error fatal");
    }
}

Buena práctica: define ILog como static readonly para evitar crear instancias repetidas y mejorar el rendimiento.

Resultado de ejecución

  1. Cuando se ejecuta la aplicación, se crea automáticamente la carpeta logs en la raíz del sitio web;
  2. Se generan archivos de log con el patrón de nombre 2026-08-04.log;
  3. Ejemplo de contenido del archivo:
2026-08-04 15:30:22,123 [6] INFO  logger-name - Registro ordinario
2026-08-04 15:30:22,129 [6] ERROR logger-name - Registro de errorLenguaje del código: CSS (css)

Información adicional

  • Además de escribir en archivos, Log4Net también admite salida a consola, bases de datos y correo electrónico;
  • Para proyectos nuevos compara NLog / Serilog: tienen mejor compatibilidad con .NET Core/.NET 5+. Log4net se usa sobre todo para mantener proyectos antiguos de WebForm y WinForms.

Introducción e instalación

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *