« Nlog » : différence entre les versions

De Banane Atomic
Aller à la navigationAller à la recherche
Ligne 19 : Ligne 19 :
       "logconsole": {
       "logconsole": {
         "type": "ColoredConsole",
         "type": "ColoredConsole",
         "layout": "${longdate}|${level}|${message} |${all-event-properties} ${exception:format=tostring}"
         "layout": "${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true}"
       }
       }
     },
     },

Version du 16 mars 2023 à 15:51

Links

Console project

Nuget packages

  • NLog.Extensions.Logging
  • Microsoft.Extensions.DependencyInjection
  • Microsoft.Extensions.Configuration.Json

Config file

Be sure to have the config file copied to the output folder while building.
appsettings.json
{
  "NLog": {
    "throwConfigExceptions": true,
    "targets": {
      "async": true,
      "logconsole": {
        "type": "ColoredConsole",
        "layout": "${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true}"
      }
    },
    "rules": [
      {
        "logger": "*",
        "minLevel": "Info",
        "writeTo": "logconsole"
      }
    ]
  }
}

Program

Program.cs
var logger = LogManager.GetCurrentClassLogger();

try
{
    var config = new ConfigurationBuilder()
       .SetBasePath(Directory.GetCurrentDirectory())
       .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
       .Build();

    // to log in this class only
    LogManager.Configuration = new NLogLoggingConfiguration(config.GetSection("NLog"));

    using var servicesProvider = new ServiceCollection()
        .AddTransient<MyApp>()
        .AddLogging(loggingBuilder =>
        {
            // configure Logging with NLog
            loggingBuilder.ClearProviders();
            loggingBuilder.SetMinimumLevel(Microsoft.Extensions.Logging.LogLevel.Trace);
            loggingBuilder.AddNLog(config);
        }).BuildServiceProvider();

    var myApp = servicesProvider.GetRequiredService<MyApp>();
    myApp.Run();
}
catch (Exception ex)
{
    // NLog: catch any exception and log it.
    logger.Error(ex, "Stopped program because of exception");
    throw;
}
finally
{
    // Ensure to flush and stop internal timers/threads before application-exit (Avoid segmentation fault on Linux)
    LogManager.Shutdown();
}