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

.NET 6与.NET 8中Serilog Http Sink日志格式差异问题(7.2.0+版本异常)

问题原因解析

这个格式变化并非由.NET 8升级导致,而是Serilog Http Sink 7.2.0版本引入的默认批次格式化器变更:

  • 在7.2.0之前的版本,Http Sink默认使用DefaultBatchFormatter,它会将日志批次包装在一个包含events字段的顶层对象中,输出格式类似:
    {"events": [{"Timestamp": "...", "Message": "...", ...}, ...]}
    
  • 从7.2.0版本开始,官方将默认的批次格式化器替换为ArrayBatchFormatter,该格式化器会直接输出日志事件的数组,不再添加外层包装对象,也就是你现在看到的直接数组格式:
    [{"Timestamp": "...", "Message": "...", ...}, ...]
    

官方做出这个变更的目的是适配更多日志收集端点的预期格式——部分服务直接接收纯数组格式的日志数据,无需外层包装。

如果需要恢复旧版的包装格式,可在配置Http Sink时显式指定使用DefaultBatchFormatter:

代码配置示例

using Serilog;
using Serilog.Sinks.Http.BatchFormatters;

Log.Logger = new LoggerConfiguration()
    .WriteTo.Http("https://your-log-endpoint",
        batchFormatter: new DefaultBatchFormatter())
    .CreateLogger();

配置文件(appsettings.json)示例

{
  "Serilog": {
    "WriteTo": [
      {
        "Name": "Http",
        "Args": {
          "requestUri": "https://your-log-endpoint",
          "batchFormatter": "Serilog.Sinks.Http.BatchFormatters.DefaultBatchFormatter, Serilog.Sinks.Http"
        }
      }
    ]
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 11:47:07