使用原始字段名称的serilog JSON格式

问题描述 投票:0回答:1

从3.1.0版本开始,引入了TraceId和SpanId,现在以JSON格式编写为@tr和@sp。如何在不使用缩写的情况下直接使用 TraceId 和 SpanId?我该如何处理?

现在,我看到:

{
    "time": "2023-12-27T16:05:49.961610672+08:00",
    "@t": "2023-12-27T08:05:49.9614905Z",
    "@mt": "xxxxxx",
    "@tr": "88a772ee01ba9638826404854610b04b",
    "@sp": "baa96aeaf9601eac",
    "ConnectionId": "0HMVS8LGKQ6UQ"
}

但我想像这样发出它:

{    
    "time": "2023-12-27T16:05:49.961610672+08:00",
    "@t": "2023-12-27T08:05:49.9614905Z",
    "@mt": "xxxxxx",
    "TraceId": "88a772ee01ba9638826404854610b04b",
    "SpanId": "baa96aeaf9601eac",
    "ConnectionId": "0HMVS8LGKQ6UQ"
}
serilog
1个回答
0
投票

使用

Serilog.Expressions
包中的 ExpressionTemplate

// using Serilog.Templates;

var formatter = new ExpressionTemplate(
    "{ {time: @t, @t, @mt, TraceId: @tr, SpanId: @sp, ..@p} }");

我不确定

time
在您的示例中来自哪里,这里的代码假设它是
@t
的别名。

您没有提到您正在使用哪个接收器,但大多数人接受

ITextFormatter
参数,该参数由
ExpressionTemplate
实现。

您的示例还省略了异常和级别。查看 Serilog.Expressions 自述文件 以及 这篇博文 描述了不同的 JSON 格式选项和可能性。

© www.soinside.com 2019 - 2024. All rights reserved.