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

如何在Serilog .NET中配置JSON格式化程序的输出模板

Serilog JSON日志自定义模板不生效的解决办法

问题原因

你当前的JSON日志Sink配置中,同时指定了CompactJsonFormatter和template参数,但CompactJsonFormatter是固定格式的格式化器,不会读取你的自定义模板。要使用Serilog.Expressions实现自定义JSON结构,必须改用ExpressionTemplate作为格式化器。

修改后的配置

将第二个File Sink的配置调整如下,替换原有的格式化器参数:

{
  "Serilog": {
    "Using": [
      "Serilog.Sinks.Console",
      "Serilog.Sinks.File",
      "Serilog.Expressions"
    ],
    "MinimumLevel": {
      "Default": "Information",
      "Override": {
        "Microsoft.AspNetCore.Mvc": "Warning",
        "Microsoft.AspNetCore.Routing": "Warning",
        "Microsoft.AspNetCore.Hosting": "Warning"
      }
    },
    "WriteTo": [
      {
        "Name": "File",
        "Args": {
          "path": "Logs/log-.txt",
          "rollingInterval": "Day",
          "outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level:u3}] {Message:lj}{NewLine}{Exception}",
          "fileSizeLimitBytes": 10485760,
          "rollOnFileSizeLimit": true,
          "shared": true,
          "flushToDiskInterval": 1
        }
      },
      {
        "Name": "File",
        "Args": {
          "path": "Logs/logjson-.json",
          "rollingInterval": "Day",
          "fileSizeLimitBytes": 10485760,
          "rollOnFileSizeLimit": true,
          "formatter": "Serilog.Expressions.ExpressionTemplate, Serilog.Expressions",
          "formatterArgs": {
            "template": "{ {@t, @mt, @l: if @l = 'Information' then undefined() else @l, @x, ..@p} }"
          },
          "shared": true,
          "flushToDiskInterval": 1
        }
      }
    ],
    "Enrich": [
      "FromLogContext"
    ]
  }
}

关键修改点

  • 移除了直接写在Args里的template参数,改用formatterArgs传递模板
  • 将格式化器替换为Serilog.Expressions.ExpressionTemplate,这是支持表达式自定义的JSON格式化器
  • 模板逻辑保持你原来的需求:Info级别日志不输出@l字段,保留@t、@mt、异常信息@x,以及其他剩余属性..@p

注意事项

  • 确认已安装Serilog.Expressions和Serilog.Sinks.File NuGet包
  • 重启应用后,JSON日志会按照你定义的模板生成,多余的默认属性会被过滤

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 21:05:01