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

如何通过JSON配置仅为特定Sink(File)应用Enricher

如何通过JSON配置仅为特定Sink(File)应用Enricher

这个需求在Serilog配置里很常见,你之前的思路方向是对的,但写法上有个关键细节没注意到——Serilog的JSON配置中,针对单个Sink的enricher需要用数组形式来声明,而不是单个字符串。

正确的配置方式

首先移除全局的"Enrich": "SuperCoolEnricher"配置(避免所有Sink都被该Enricher处理),然后在WriteTo:File的配置块里添加数组形式的Enrich属性:

{
  "WriteTo:File": {
    "Name": "File",
    "Args": {
      // 这里填写你的File Sink参数,比如路径、格式等
    },
    "Enrich": [ "SuperCoolEnricher" ]
  },
  "WriteTo:Seq": {
    "Name": "Seq",
    "Args": {
      // 这里填写你的Seq Sink参数
    }
  }
}

如果需要保留全局Enricher

如果你还有其他全局生效的Enricher,想让File Sink同时拥有全局Enricher和这个特定的SuperCoolEnricher,可以保留全局的Enrich配置,同时在File Sink里追加特定的Enricher:

{
  "Enrich": [ "SomeGlobalEnricher" ],
  "WriteTo:File": {
    "Name": "File",
    "Args": { ... },
    "Enrich": [ "SuperCoolEnricher" ]
  },
  "WriteTo:Seq": {
    "Name": "Seq",
    "Args": { ... }
  }
}

这种情况下,File Sink的日志事件会被SomeGlobalEnricher和SuperCoolEnricher共同处理,而Seq Sink只会应用全局的SomeGlobalEnricher。

为什么你之前的写法不生效

你之前直接写"Enrich": "SuperCoolEnricher"(单个字符串),Serilog的JSON配置解析器期望这里是一个数组(即使只有一个Enricher),所以无法识别这个配置,导致Enricher没有被应用到File Sink上。

备注:内容来源于stack exchange,提问作者sharpener

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 15:03:14