日志记录
一旦使用了 或 AddDbContextPool
,EF Core 就会自动集成 ASP.NET Core 的日志记录机制。因此,当使用 ASP.NET Core 的时候,日志记录的配置与 ASP.NET Core 帮助文档 中所描述的是一致的。
EF Core 日志记录目前需要一个 ILoggerFactory,其自身配置了一个或多个 ILoggerProvider。通用提供程序是随以下程序包一起发布的:
- :支持 Azure 应用程序服务的 “诊断日志” 和 “日志流” 功能。
- Microsoft.Extensions.Logging.Debug:使用 System.Diagnostics.Debug.WriteLine() 将日志记录到调试监视器。
- :记录到 Windows 事件日志。
- Microsoft.Extensions.Logging.TraceSource:使用 System.Diagnostics.TraceSource.TraceEvent() 将日志记录到跟踪监视器。
然后这个单一的/全局的实例应该通过 注册到 EF Core。例如:
警告
应用程序应该避免为每个上下文实例都创建新的 ILoggerFactory 实例,这很重要。否则会导致内存泄露、性能低下。
在该样例中,过滤后的日志仅包含这样的信息:
- 属于
Microsoft.EntityFrameworkCore.Database.Command
分类的 - 等级为 的
对于 EF Core,日志记录器分类是在 DbLoggerCategory
类型中定义的,主要是为了便于查找分类,但是都解析为简单字符串。
关于底层日志基础设施的详细内容请查看 。