【问题标题】:Change logging level of SQL queries logged by Entity Framework Core更改 Entity Framework Core 记录的 SQL 查询的日志记录级别
【发布时间】:2019-09-20 18:37:20
【问题描述】:

Entity Framework 核心默认将所有执行的 SQL 查询记录到 ASP.NET Core 记录器 (Microsoft.Extensions.Logging)。默认日志级别是信息,但对我来说,信息日志似乎有点啰嗦。我更喜欢它在 Debug 甚至 Trace 级别。

有没有办法配置 EFCore 以在调试(或跟踪)级别而不是信息级别记录这些 SQL 查询?

【问题讨论】:

标签: asp.net-core entity-framework-core


【解决方案1】:

从 Entity Framework Core 3.0 开始,可以更改为 SQL 查询的日志记录级别。 在 3.0 预览期间,所有查询执行日志默认更改为 Debug。后来此更改被还原,现在可以配置了。

要做到这一点,覆盖 OnConfiguring 中的 DbContext 并运行以下 sn-p:

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    => optionsBuilder.ConfigureWarnings(c => c.Log((RelationalEventId.CommandExecuting, LogLevel.Debug)));

见:https://docs.microsoft.com/en-us/ef/core/what-is-new/ef-core-3.0/breaking-changes#query-execution-is-logged-at-debug-level-reverted

【讨论】:

    【解决方案2】:

    您可以单独设置 Microsoft 或系统消息的日志级别。

    对于您的 EntityFramework 聊天记录,您可以在您的启动类中进行设置。

    services.AddLogging(builder =>
    {
        builder.AddFilter("Microsoft", LogLevel.Warning);
        builder.AddFilter("System", LogLevel.Error);
    });
    

    【讨论】:

    • 抱歉,这不是问题所在。您正在设置过滤器。我不想过滤消息,我想更改消息的日志级别。
    猜你喜欢
    • 1970-01-01
    • 2014-09-01
    • 2023-04-11
    • 2017-01-10
    • 2020-11-19
    • 1970-01-01
    • 1970-01-01
    • 2016-02-20
    • 1970-01-01
    相关资源
    最近更新 更多