Cómo usar log4net en Asp.net core 2.0

Cómo usar log4net en Asp.net core 2.0

Existe un adaptador log4net de terceros para la interfaz de registro de ASP.NET Core.

Lo único que tienes que hacer es pasar el ILoggerFactory a tu Startup clase, luego llame

loggerFactory.AddLog4Net();

y tener una configuración en su lugar. Así que no tienes que escribir ningún código repetitivo.

Más información aquí


Puedo registrar correctamente un archivo usando el siguiente código

public static void Main(string[] args)
{
    XmlDocument log4netConfig = new XmlDocument();
    log4netConfig.Load(File.OpenRead("log4net.config"));
    var repo = log4net.LogManager.CreateRepository(Assembly.GetEntryAssembly(),
               typeof(log4net.Repository.Hierarchy.Hierarchy));
    log4net.Config.XmlConfigurator.Configure(repo, log4netConfig["log4net"]);

    BuildWebHost(args).Run();
}

log4net.config en la raíz del sitio web

<?xml version="1.0" encoding="utf-8" ?>
<log4net>
  <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
    <file value="C:\Temp\" />
    <datePattern value="yyyy-MM-dd.'txt'"/>
    <staticLogFileName value="false"/>
    <appendToFile value="true"/>
    <rollingStyle value="Date"/>
    <maxSizeRollBackups value="100"/>
    <maximumFileSize value="15MB"/>
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date [%thread] %-5level App  %newline %message %newline %newline"/>
    </layout>
  </appender>
    <root>
      <level value="ALL"/>
      <appender-ref ref="RollingLogFileAppender"/>
    </root>
</log4net>

¿Todavía en busca de una solución? Obtuve el mío de este enlace .

Todo lo que tenía que hacer era agregar estas dos líneas de código en la parte superior del método "public static void Main" en la "clase de programa".

 var logRepo = LogManager.GetRepository(Assembly.GetEntryAssembly());
 XmlConfigurator.Configure(logRepo, new FileInfo("log4net.config"));

Sí, tienes que añadir:

  1. Microsoft.Extensions.Logging.Log4Net.AspNetCore usando NuGet.
  2. Un archivo de texto con el nombre de log4net.config y cambie la propiedad (Copiar al directorio de salida) del archivo a "Copiar si es más nuevo" o "Copiar siempre".

También puede configurar su aplicación principal de asp.net de tal manera que todo lo que se registra en la consola de salida se registrará en el agregador de su elección. También puede descargar este código de ejemplo de github y ver cómo lo configuré.


No