日志记录

    一旦使用了 或 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 类型中定义的,主要是为了便于查找分类,但是都解析为简单字符串。

    关于底层日志基础设施的详细内容请查看 。