Change logging level of SQL queries logged by Entity Framework Core

asp.net-core entity-framework-core

Question

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?

1
6
12/19/2017 6:55:31 PM

Accepted Answer

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

1
9/20/2019 10:37:20 AM

Popular Answer

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);
});


Related Questions





Related

Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow
Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow