When you are using the built-in logging in ASP.NET Core, you can filter out specific information by changing the log levels in the appsettings.json:
But when you switch to Serilog, this no longer works and the configuration values are ignored.
Our original configuration looked like this:
Here is what was logged by default after switching to Serilog:
2022-02-03 12:17:07.861 +01:00 [WRN] Failed to determine the https port for redirect.
2022-02-03 12:17:58.429 +01:00 [WRN] Failed to determine the https port for redirect.
2022-02-03 12:19:19.555 +01:00 [WRN] Failed to determine the https port for redirect.
2022-02-03 12:20:21.553 +01:00 [INF] OnStarted has been called.
2022-02-03 12:20:21.631 +01:00 [INF] Request starting HTTP/1.1 POST http://localhost/mail/ application/json;+charset=utf-8 318
2022-02-03 12:20:21.631 +01:00 [INF] Request starting HTTP/1.1 POST http://localhost/mail/ application/json;+charset=utf-8 318
2022-02-03 12:20:21.631 +01:00 [INF] Request starting HTTP/1.1 POST http://localhost/mail/ application/json;+charset=utf-8 318
2022-02-03 12:20:21.636 +01:00 [INF] Request starting HTTP/1.1 POST http://localhost/mail/ application/json;+charset=utf-8 318
2022-02-03 12:20:21.639 +01:00 [INF] Request starting HTTP/1.1 POST http://localhost/mail/ application/json;+charset=utf-8 318
2022-02-03 12:20:21.639 +01:00 [INF] Request starting HTTP/1.1 POST http://localhost/mail/ application/json;+charset=utf-8 318
2022-02-03 12:20:21.640 +01:00 [INF] Request starting HTTP/1.1 POST http://localhost/mail/ application/json;+charset=utf-8 318
2022-02-03 12:20:21.640 +01:00 [INF] Request starting HTTP/1.1 POST http://localhost/mail/ application/json;+charset=utf-8 318
2022-02-03 12:20:21.640 +01:00 [INF] Request starting HTTP/1.1 POST http://localhost/mail/ application/json;+charset=utf-8 318
2022-02-03 12:20:21.640 +01:00 [INF] Request starting HTTP/1.1 POST http://localhost/mail/ application/json;+charset=utf-8 318
2022-02-03 12:20:21.671 +01:00 [WRN] Failed to determine the https port for redirect.
2022-02-03 12:20:21.677 +01:00 [INF] Executing endpoint 'Mailing.API.Controllers.MailController.Send (Mailing.API)'
2022-02-03 12:20:21.677 +01:00 [INF] Executing endpoint 'Mailing.API.Controllers.MailController.Send (Mailing.API)'
2022-02-03 12:20:21.677 +01:00 [INF] Executing endpoint 'Mailing.API.Controllers.MailController.Send (Mailing.API)'
2022-02-03 12:20:21.706 +01:00 [INF] Route matched with {action = "Send", controller = "Mail"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] Send(Mailing.DTO.SendMailMessage, System.Threading.CancellationToken) on controller Mailing.API.Controllers.MailController (Mailing.API).
2022-02-03 12:20:21.717 +01:00 [INF] Route matched with {action = "Send", controller = "Mail"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] Send(Mailing.DTO.SendMailMessage, System.Threading.CancellationToken) on controller Mailing.API.Controllers.MailController (Mailing.API).
2022-02-03 12:20:21.729 +01:00 [INF] Route matched with {action = "Send", controller = "Mail"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] Send(Mailing.DTO.SendMailMessage, System.Threading.CancellationToken) on controller Mailing.API.Controllers.MailController (Mailing.API).
2022-02-03 12:20:21.794 +01:00 [INF] Configured endpoint mediator, Consumer: Mailing.API.Domain.MailConsumer
2022-02-03 12:20:21.900 +01:00 [INF] Executing action method Mailing.API.Controllers.MailController.Send (Mailing.API) - Validation state: "Valid"
2022-02-03 12:20:21.900 +01:00 [INF] Executing action method Mailing.API.Controllers.MailController.Send (Mailing.API) - Validation state: "Valid"
2022-02-03 12:20:21.900 +01:00 [INF] Executing action method Mailing.API.Controllers.MailController.Send (Mailing.API) - Validation state: "Valid"
Whoops! That’s way too much information.
To fix it, you can override the minimal loglevel in Serilog for specific targets:
This will help you to keep the amount of log data under control.