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

如何在appsettings.json的NLog日志规则中指定多个过滤器

重复键错误根因

JSON结构天然不允许同一对象下存在重复的同名键,尝试添加额外过滤器时,如果是直接在filters节点下新增同级的第二个when键,会直接触发配置校验的重复键报错。这种写法既不符合JSON格式规范,也无法被NLog的配置绑定逻辑识别。

正确的多过滤器配置方式

NLog在加载appsettings.json这类基于Microsoft.Extensions.Configuration的配置源时,对多when过滤器的支持是通过将when字段从单对象结构调整为数组结构实现。这种写法和XML配置中并列多个<when>节点的运行效果完全对齐,不会存在功能差异。
正确的可运行配置示例:

"rules": [
  {
    "logger": "*",
    "minLevel": "Debug",
    "writeTo": "db",
    "filters": {
      "when": [
        { 
          "condition": "equals('${event-properties:sublevel}','diagnostic')",
          "action": "Ignore"
        },
        {
          "condition": "equals('${event-properties:sublevel}','trace-noop')",
          "action": "Ignore"
        }
      ]
    }
  }
]

配置注意事项

  • 数组内的过滤规则会按照书写顺序依次执行匹配,遵循NLog WhenFilter的通用处理逻辑
  • 你现有可正常运行的单对象when写法本质是单元素数组的兼容简写,调整为数组结构后,单条规则的配置参数可以完全沿用原有写法,无需额外修改
  • 所有when节点支持的配置属性(比如是否忽略大小写、自定义命中动作等)都可以在数组的每个元素中正常定义

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.29 06:27:03