Come utilizzare log4net in Asp.net core 2.0

Come utilizzare log4net in Asp.net core 2.0

È disponibile un adattatore log4net di terze parti per l'interfaccia di registrazione ASP.NET Core.

L'unica cosa che devi fare è passare il ILoggerFactory al tuo Startup classe, quindi chiama

loggerFactory.AddLog4Net();

e avere una configurazione in atto. Quindi non devi scrivere nessun codice di targa.

Maggiori informazioni qui


Sono in grado di registrare correttamente un file utilizzando il seguente codice

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 nella radice del sito 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>

Stai ancora cercando una soluzione? Ho preso il mio da questo link.

Tutto quello che dovevo fare era aggiungere queste due righe di codice nella parte superiore del metodo "public static void Main" nella "classe del programma".

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

Sì, devi aggiungere:

  1. Microsoft.Extensions.Logging.Log4Net.AspNetCore utilizzando NuGet.
  2. Un file di testo con il nome di log4net.config e modificare la proprietà (Copia nella directory di output) del file in "Copia se più recente" o "Copia sempre".

Puoi anche configurare la tua applicazione core asp.net in modo tale che tutto ciò che è registrato nella console di output venga registrato nell'apper di tua scelta. Puoi anche scaricare questo codice di esempio da github e vedere come l'ho configurato.


No