Search code examples
c#.net-coreserilog

Serilog not reading from logging section in appsettings.json


This my logger config:

var loggerConfig = new LoggerConfiguration()
        //.MinimumLevel
        //.Information() //These are not working from appsettings.json possibly because we are using Serilog?
        //.MinimumLevel.Override("Microsoft.EntityFrameworkCore.Database.Command", LogEventLevel.Warning)
        .ReadFrom.Configuration(configuration,"Logging")
        .WriteTo.Console()
        .WriteTo.File(
            $"{configuration.GetValue<string>("logFilePath")}{DateTime.Now.Date:yyyy_MM_dd}_{assemblyName}.log");
        
var logger = loggerConfig.CreateLogger();

services.AddLogging(loggingBuilder =>
    {
        loggingBuilder.ClearProviders();
        loggingBuilder.AddSerilog(logger);
    });

This is the logging section of my appsettings.json:

"Logging": {
    "LogLevel": {
      "Default": "Debug",
      "Microsoft": "Information",
      "Microsoft.Hosting.Lifetime": "Information",
      "Microsoft.EntityFrameworkCore.Database.Command": "Warning"
    }

The logging is not following the settings from levels from setting and seems like defaulting to information.

I also tried the following and it did not work

"Logging": {
    "MinimumLevel": {
      "Default": "Debug",
      "Override": {
        "System": "Information",
        "Microsoft": "Information",
        "Microsoft.Hosting.Lifetime": "Information",
        "Microsoft.EntityFrameworkCore": "Warning"
      }
    }

Solution

  • A sample of configuration Serilog: uncomment line to have a json ouput

    {
      "Serilog": {
        "Using": [],
        "MinimumLevel": {
          "Default": "Information",
          "Override": {
            "Microsoft": "Warning",
            "System": "Warning"
          }
        },
        "WriteTo": [
          { "Name": "Console" },
          {
            "Name": "File",
            "Args": {
              "path": "C:/Users/itki4060/Desktop/DBLite/log/log.txt",
              "rollingInterval": "Month",
              "retainedFileCountLimit": 13
              //"formatter": "Serilog.Formatting.Json.JsonFormatter, Serilog"
            }
          }
        ]
      },
    

    the you could use the config like this:

    var builder = new ConfigurationBuilder().SetBasePath(AppDomain.CurrentDomain.BaseDirectory)
                                            .AddJsonFile("appsettings.json");
    
    
    var config = builder.Build();
    
    Log.Logger = new LoggerConfiguration().ReadFrom.Configuration(config)
                                          .CreateLogger();
    

    Log is static:

    Log.Information("i am logging");