No Serilogging

Ik heb een eenvoudige winform applicatie in .Net Framework 4.8, waar ik een betere versie van wil maken in dotnet6+. Maar logging met Serilog geconfigureerd in de appsettings.json kreeg ik niet aan de praat.

In program.cs wordt de mainform gestart vanuit een host, waarbij Serilog moet worden gebruikt. Na wat gedoe kon ik de configuratie inmiddels via een appsettings.json instellen. In de Main() method van program.cs, die bij het runnen als eerste wordt aangeroepen, wordt de host alsvolgt aangemaak:

var host = CreateHostBuilder().Build();

Deze CreateHostBuilder() method maakt een IHostBuilder met extensions voor configuratie, logging en dependency injection.

static IHostBuilder CreateHostBuilder()
{
Configuration = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", false, true)
.Build();


//Add Serilog
Log.Logger = new LoggerConfiguration()
.ReadFrom.Configuration(Configuration)
//.WriteTo.File(@".\logs\log-.txt", rollingInterval: RollingInterval.Day)
.CreateLogger();


return Host.CreateDefaultBuilder()
.ConfigureServices((context, services) =>
{
services.AddSingleton(Configuration);
services.AddWif();
services.AddScheduleService();
})

.UseSerilog();
}

Bij het starten werkte de logging wel met de ‘.WriteTo.File’, maar niet bij ‘.ReadFrom.Configuration(Configuration)’. Terwijl ik het exact doe als in de serilog documentatie. Exact? Nee dus. Ergens een via copy/paste was de RollingFile als name geïntroduceerd.

In de appsettings.json is de name is geen vrije optie maar moet dus “File” zijn.

"WriteTo": [
  {
    "Name": "File",
    "Args": {
      "path": ".\\logs\\log.txt",
      "rollingInterval": "Day"
    }
  }
],

Reacties zijn gesloten.

Blog op WordPress.com.

Omhoog ↑