从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.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 格式选项和可能性。