使用EF Core 2和Nlog记录生成的SQL

Mat*_*ynn 6 c# nlog entity-framework-core asp.net-core

我对如何使用asp.net core 2和EntityFrameworkCore 2记录生成的SQL以及正确的处理方法感到有些困惑。

从MS docs 阅读此链接后,我应该在startup.csusing 中的服务配置过程中添加.UseLoggerFactory(<LoggerFactory>)

但是,这似乎已过时,因为当我希望添加记录器时,会收到此消息。

Visual Studio 2017 UseLoggerFactory的消息

有人可以告诉我添加记录器以记录SQL以便进行调试的最佳方法吗?

我还计划继续使用Nlog进行所有日志记录,而不是使用内置的日志记录工具,我假设这样做的方法(因为注入了Nlog loggerfactory而不是默认的MS实例),所以方法相同或存在配置差异(关于使用NLog)?

emp*_*emp 5

首先按照官方文档中的说明注册NLog

然后ILoggerFactory在您的Startup班级中注入一个

private readonly ILoggerFactory _factory;
public Startup(IHostingEnvironment env, ILoggerFactory factory)
{ 
     _factory = factory ?? throw new ArgumentNullException(nameof(factory)); 
}
Run Code Online (Sandbox Code Playgroud)

最后,将工厂链接为记录器工厂,以用于 DbContext

public void ConfigureServices(IServiceCollection services)
{
     services.AddDbContext<YourContext>(options => { options.UseLoggerFactory(_factory); });
}
Run Code Online (Sandbox Code Playgroud)

EF Core语句现在使用NLog记录 在此处输入图片说明