使用 NLog 时抑制 EF Core SQL 的 Logger 输出

问题描述 投票:0回答:1

我正在尝试让 EF Core 停止将 SQL 写入我的日志文件。我正在使用 NLog。我的 appsettings.json 中有以下内容:

"Logging":
{
    "LogLevel":
    {
        "Default": "Information",
        "Microsoft": "Warning",
        "Microsoft.Hosting.Lifetime": "Information",
        "Microsoft.AspNetCore": "Warning",
        "Microsoft.EntityFrameworkCore.Database.Command": "Warning"
    }
},

我在创建上下文时尝试设置以下内容:

    services.AddDbContext<TContext>(o =>
    {
        o.UseSqlServer(connectionString);
        o.ConfigureWarnings(c => c.Log((RelationalEventId.CommandExecuting, LogLevel.Warning)));
    });

我在添加日志记录时尝试了这样的方法:

    services.AddLogging(logging =>
    {
        logging.ClearProviders();
        logging.SetMinimumLevel(LogLevel.Trace);
        logging.AddConfiguration(configuration.GetSection("Logging"));
        logging.AddNLog();
        logging.AddFilter("Microsoft", LogLevel.Warning);
    });

每次仍然记录日志信息:

2024-11-20 15:13:36.3284||INFO|Microsoft.EntityFrameworkCore.Database.Command|Executed DbCommand (34ms)...

我错过了什么?

entity-framework nlog
1个回答
0
投票

您的代码看起来正确;这是我的建议。

  1. 我最好的猜测是,您在 Nlog 配置中指定的内容可能会覆盖
    appsettings.json
    中的配置。

为了测试这个,你可以在

services.AddLogging()
中添加以下内容吗?由于此过滤器处于代码级别,因此它应该有助于覆盖 NLog 设置。

logging.AddFilter("Microsoft.EntityFrameworkCore.Database.Command", LogLevel.Warning);

  1. 您是否有 Nlog.config 文件,如果有,请确认是否为
    Microsoft.EntityFrameworkCore.Database.Command
    指定了更宽松的规则?
© www.soinside.com 2019 - 2024. All rights reserved.