Search code examples
serilog

Serilog logs on Console below minimum level


I defined a Logger this way with LogLevel FATAL for Console log:

            LoggerConfiguration logCfg = new LoggerConfiguration();
        logCfg
        .MinimumLevel.Debug()
        .MinimumLevel.Override("Microsoft", LogEventLevel.Error)
        .Enrich.FromLogContext()
        .Enrich.With(new UtcTimestampEnricher())
        .Enrich.WithProperty("SENDER", applicationName)

        //ToDo, extend the Logger for DB to log an active GUID
        //.Enrich.WithProperty("GUID", guid)
        .WriteTo.Console(restrictedToMinimumLevel: LogEventLevel.Fatal)
        .WriteTo.File(applicationLogPath,
                      restrictedToMinimumLevel: logEventLvlFile,
                      outputTemplate: fileOutputTemplate,
                      rollOnFileSizeLimit: changeOnFileSizeLimit,
                      fileSizeLimitBytes: fileSize,
                      retainedFileCountLimit: retainedFileCount);

But this will be displayed on Console:

 _logger.LogInformation("Worker pulling config at: {time}", DateTimeOffset.Now);

Solution

  • This was the solution:

     foreach (ServiceDescriptor serviceDescriptor in logging.Services)
                    {
                        if (serviceDescriptor.ImplementationType == typeof(Microsoft.Extensions.Logging.Console.ConsoleLoggerProvider))
                        {
                            // remove ConsoleLoggerProvider service only
                            logging.Services.Remove(serviceDescriptor);
                            break;
                        }
                    }
                    logging.AddSerilog();