c# - started - log4net windows xp




Come usare log4net in Asp.net core 2.0 (4)

È necessario installare il pacchetto Microsoft.Extensions.Logging.Log4Net.AspNetCore NuGet e aggiungere un file log4net.config alla propria applicazione. Allora questo dovrebbe funzionare:

public class Program
{
    private readonly ILogger<Program> logger;

    public Program()
    {
        var services = new ServiceCollection()
            .AddLogging(logBuilder => logBuilder.SetMinimumLevel(LogLevel.Debug))
            .BuildServiceProvider();


        logger = services.GetService<ILoggerFactory>()
            .AddLog4Net()
            .CreateLogger<Program>();
    }

    static void Main(string[] args)
    {
        Program program = new Program();

        program.Run();

        Console.WriteLine("\n\nPress any key to continue...");
        Console.ReadKey();
    }

    private void Run()
    {
        logger.LogInformation("Logging is working");
    }
}

Configuro log4net nella mia applicazione asp.net core 2.0 come menzionato in questo articolo LINK

Program.cs

public static void Main(string[] args)
{
    var logRepository = LogManager.GetRepository(Assembly.GetEntryAssembly());
    XmlConfigurator.Configure(logRepository, new FileInfo("log4net.config"));

    BuildWebHost(args).Run();
}

HomeController

public class HomeController : Controller
{
    private static readonly log4net.ILog log = log4net.LogManager.GetLogger(typeof(HomeController));

    public IActionResult Error()
    {
        log.Info("Hello logging world!");
        return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
    }
}

log4net.config

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <log4net>
    <root>
      <level value="ALL" />
      <appender-ref ref="RollingFile" />
    </root>
    <appender name="RollingFile" type="log4net.Appender.FileAppender">
      <file value="‪C:\Temp\app.log" /> 
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%-5p %d{hh:mm:ss} %message%newline" />
      </layout>
    </appender>
  </log4net>
</configuration>

Sfortunato !, Non ho visto nessun file generato nella directory C C:\Temp\app.log . Quale sarebbe l'errore? come configurare log4net per asp.net core 2.0?


Nota: esiste già l'adattatore log4net per l'interfaccia di registrazione di ASP.NET Core.

L'unica cosa che devi fare è passare ILoggerFactory alla tua classe di Startup , quindi chiamare

loggerFactory.AddLog4Net();

e avere una configurazione in atto. Quindi non devi scrivere alcun codice di placcatura della caldaia.

https://github.com/huorswords/Microsoft.Extensions.Logging.Log4Net.AspNetCore


Sono in grado di registrare un file con successo 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 root 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 che utilizza NuGet.
  2. Un file di testo con il nome di log4net.config e modificare la proprietà (Copia nella directory di output) del file su "Copia se nuovo" o "Copia sempre".

È inoltre possibile configurare l'applicazione principale asp.net in modo tale che tutto ciò che viene registrato nella console di output venga registrato nell'appender di propria scelta. Puoi anche scaricare questo codice di esempio da github e vedere come l'ho configurato.





log4net-configuration