我想使用NLog记录Entity Framework Core中的SQL查询,类似于WebApi Core的方式。我该如何设置?
如果想要使用 Entity Framework Core 进行日志记录,可以参考这里的文档。
你需要做以下事情:(请查看文档)
public static readonly LoggerFactory MyLoggerFactory
= new LoggerFactory(new[] {new ConsoleLoggerProvider((_, __) => true, true)});
使用来自https://www.nuget.org/packages/NLog.Extensions.Logging这个包的NLogLoggerProvider
代替ConsoleLoggerProvider
,例如:
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
=> optionsBuilder
.UseLoggerFactory(MyLoggerFactory) // Warning: Do not create a new ILoggerFactory instance each time
.UseSqlServer(
@"Server=(localdb)\mssqllocaldb;Database=EFLogging;Trusted_Connection=True;ConnectRetryCount=0");
还需要加载您的 NLog 配置文件:
NLog.LogManager.LoadConfiguration("nlog.config");
optionsBuilder.UserLoggerFactory(new NLogLoggerFactory())
但如果你这样做,你应该总是在这之前检查optionsBuilder.IsConfigured
。否则,你会一直创建新的记录器工厂。 - Grungondola