Logging Generated SQL with EF Core 2 and Nlog

asp.net-core c# entity-framework-core nlog


I'm getting a little confused with how to log the generated SQL with asp.net core 2 and EntityFrameworkCore 2 and the correct way to go about it.

After reading the this link from the MS docs it is saying that I should add during the services configuration in the startup.cs using .UseLoggerFactory(<LoggerFactory>).

However, this seems outdated as when I look to add the logger I get this message;

Visual Studio 2017 Message for UseLoggerFactory

Could someone please tell me the best way to add the logger to log the SQL for debug purposes?

I also plan to use Nlog going forward for all my logging as opposed to the built in logging facilities, I assume the approach (In that the Nlog loggerfactory is injected instead of the default MS instance) for this would be the same or are there any configuration differences (with regards to using NLog)?

4/11/2018 5:49:02 AM

Popular Answer

First register NLog as described on the official docs

Then inject an ILoggerFactory in your Startup class

private readonly ILoggerFactory _factory;
public Startup(IHostingEnvironment env, ILoggerFactory factory)
     _factory = factory ?? throw new ArgumentNullException(nameof(factory)); 

Finally link the factory as the logger factory to use for the DbContext

public void ConfigureServices(IServiceCollection services)
     services.AddDbContext<YourContext>(options => { options.UseLoggerFactory(_factory); });

EF Core statements are now logged using NLog enter image description here

9/13/2018 5:22:10 PM

Related Questions


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