You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nlog配置问题:EF Core日志级别未按预期生效求助

问题

我在appsettings.json中配置了Nlog规则,同时在DbContext的OnConfiguring方法中集成了Nlog。期望实现:

  • 所有Info级别及以上日志输出到控制台
  • Microsoft.EntityFrameworkCore.*仅输出Error和Fatal级别

但目前Microsoft.EntityFrameworkCore.*的Info级日志仍被输出,请问哪里配置错误?

配置代码

appsettings.json中的Nlog规则:

"rules": [
  {
    "logger": "Microsoft.EntityFrameworkCore.*",
    "minLevel": "Error",
    "writeTo": "console"
  },
  {
    "logger": "*",
    "minLevel": "Info",
    "writeTo": "console"
  }
]

DbContext配置代码:

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
     var loggerFactory = LoggerFactory.Create(builder => builder.AddNLog());
     optionsBuilder.UseLoggerFactory(loggerFactory);
}

问题分析与解决

你的NLog规则逻辑存在问题:NLog的规则是按顺序匹配,且默认会继续执行后续规则。也就是说,Microsoft.EntityFrameworkCore.*的日志先匹配第一条规则输出Error及以上级别,但同时会进入第二条*规则,触发Info及以上级别的输出,导致Info日志被重复打印。

解决方法是给第一条规则添加final: true属性,标记该规则匹配后不再执行后续规则,阻止Microsoft.EntityFrameworkCore.*的日志进入第二条规则。

修改后的NLog规则:

"rules": [
  {
    "logger": "Microsoft.EntityFrameworkCore.*",
    "minLevel": "Error",
    "writeTo": "console",
    "final": true
  },
  {
    "logger": "*",
    "minLevel": "Info",
    "writeTo": "console"
  }
]

同时请确认:

  • 你的NLog版本支持final配置项
  • appsettings.json中的NLog配置已被正确加载(比如通过对应配置加载方式完成初始化)

内容的提问来源于stack exchange,提问作者Piotr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 00:43:13