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

如何在Serilog中覆盖ASP.NET WebApi泛型类的日志级别

针对泛型类配置Serilog日志级别覆盖

要为MyService<T>这类泛型类统一覆盖日志级别,你需要使用开放泛型类型的标准命名格式来配置Serilog的Override项:

正确的配置示例

{
  "Serilog": {
    "MinimumLevel": {
      "Default": "Information",
      "Override": {
        "MyNamespace.MyService`1": "Debug"
      }
    }
  }
}

为什么之前的配置无效?

  • 尝试的"MyNamespace.MyService":Serilog不会将这个非泛型类名关联到任何泛型实例(比如MyService<int>),因为具体泛型类型的日志类别名称包含泛型参数标识,和普通类名不匹配。
  • 尝试的"MyNamespace.MyService<>":这不是.NET中泛型类型的标准命名格式,Serilog无法识别该格式的日志类别。

原理说明

.NET中开放泛型类型的名称规则是:类名后加`N(N为泛型参数的数量,这里MyService<T>只有1个泛型参数,所以是`1)。Serilog支持通过这个开放泛型名称匹配所有该泛型类的实例,从而实现统一的日志级别覆盖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 00:22:20