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

Serilog配置疑问:如何将单一日志级别写入独立文件

解决方案

你需要将Filters配置放在每个WriteTo条目下,与Name、Args同级,而非嵌套在Args内部。以下是完整的appsettings.json配置示例,实现三个级别日志分别写入独立文件:

"Serilog": {
  "MinimumLevel": "Information",
  "WriteTo": [
    {
      "Name": "Console"
    },
    {
      "Name": "File",
      "Args": {
        "path": "wwwroot/Logs/information.txt",
        "rollingInterval": "Day",
        "retainedFileCountLimit": 14,
        "restrictedToMinimumLevel": "Information"
      },
      "Filters": [
        {
          "Name": "ByIncludingOnly",
          "Args": {
            "expression": "@l = 'Information'"
          }
        }
      ]
    },
    {
      "Name": "File",
      "Args": {
        "path": "wwwroot/Logs/warning.txt",
        "rollingInterval": "Day",
        "retainedFileCountLimit": 14,
        "restrictedToMinimumLevel": "Warning"
      },
      "Filters": [
        {
          "Name": "ByIncludingOnly",
          "Args": {
            "expression": "@l = 'Warning'"
          }
        }
      ]
    },
    {
      "Name": "File",
      "Args": {
        "path": "wwwroot/Logs/Error.txt",
        "rollingInterval": "Day",
        "retainedFileCountLimit": 14,
        "restrictedToMinimumLevel": "Error"
      },
      "Filters": [
        {
          "Name": "ByIncludingOnly",
          "Args": {
            "expression": "@l = 'Error'"
          }
        }
      ]
    }
  ]
}

关键说明:

  • 每个File类型的WriteTo条目独立配置:分别指定对应日志文件路径,加上专属的Filters过滤规则,确保只有对应级别的日志写入文件。
  • 修正了原配置中的拼写错误:reatinedFileCountLimit改为正确的retainedFileCountLimit。
  • restrictedToMinimumLevel作为基础限制,配合ByIncludingOnly的表达式精准过滤,双重保障日志级别分离。
  • 你的Program.cs代码无需修改,已通过ReadFrom.Configuration读取配置,修改配置文件后重启应用即可生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 12:16:03