Entity Framework core by default logs all executed SQL queries to the ASP.NET Core logger (Microsoft.Extensions.Logging
). The default log level is Informational, but it seems a bit chatty to me for informational logging. I would prefer it at Debug or even Trace level.
Is there any way to configure EFCore to log these SQL queries at Debug (or Trace) level, instead of Informational level?
Since Entity Framework Core 3.0 it's possible to change to logging level of SQL queries.
During to 3.0 previews all query execution logging was changed to Debug
by default. Later this change got reverted and now it's configurable.
To do this override OnConfiguring
in your DbContext
and run the following snippet:
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
=> optionsBuilder.ConfigureWarnings(c => c.Log((RelationalEventId.CommandExecuting, LogLevel.Debug)));
See: https://docs.microsoft.com/en-us/ef/core/what-is-new/ef-core-3.0/breaking-changes#query-execution-is-logged-at-debug-level-reverted
You can set log level of Microsoft or System messages individually.
For your EntityFramework chatty logging you can set this in your startup class.
services.AddLogging(builder =>
{
builder.AddFilter("Microsoft", LogLevel.Warning);
builder.AddFilter("System", LogLevel.Error);
});
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With