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

Serilog 3.1.0+如何将@tr/@sp改为TraceId/SpanId输出?

如何将Serilog的TraceId/SpanId从缩写@tr/@sp改为全称输出

Serilog 3.1.0及以上版本默认会将TraceId和SpanId以@tr、@sp的缩写形式输出到JSON日志中。要改为使用全称TraceId和SpanId,可以通过配置JsonFormatter的属性映射来实现,以下是两种常见场景的配置方法:

代码配置(直接在Logger初始化时设置)

在构建LoggerConfiguration时,为JsonFormatter指定propertyNameMap字典,将缩写映射为全称:

Log.Logger = new LoggerConfiguration()
    .WriteTo.Console(new JsonFormatter(
        propertyNameMap: new Dictionary<string, string>
        {
            { "@tr", "TraceId" },
            { "@sp", "SpanId" }
        }))
    // 按需添加其他配置(如Enrich、MinimumLevel等)
    .CreateLogger();

如果是ASP.NET Core项目,在Program.cs中配置:

var builder = WebApplication.CreateBuilder(args);

builder.Host.UseSerilog((context, config) =>
{
    config.WriteTo.Console(new JsonFormatter(
        propertyNameMap: new Dictionary<string, string>
        {
            { "@tr", "TraceId" },
            { "@sp", "SpanId" }
        }));
});

// 后续项目配置...

配置文件(appsettings.json)方式

如果使用Serilog.Settings.Configuration包读取配置文件,可以在appsettings.json中添加如下配置:

{
  "Serilog": {
    "MinimumLevel": "Information",
    "WriteTo": [
      {
        "Name": "Console",
        "Args": {
          "formatter": {
            "type": "Serilog.Formatting.Json.JsonFormatter, Serilog",
            "propertyNameMap": {
              "@tr": "TraceId",
              "@sp": "SpanId"
            }
          }
        }
      }
    ]
  }
}

配置完成后,生成的JSON日志就会将原@tr字段替换为TraceId,@sp替换为SpanId,符合你需要的输出格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 08:23:34