.net 的 Serilog JSON 格式化程序

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

我在我的asp.net应用程序中使用serilog,配置如下:

配置:

builder.Host.UseSerilog((context, loggerConfiguration) =>
{
    loggerConfiguration
        .Enrich.FromLogContext()
        .WriteTo.Console(new RenderedCompactJsonFormatter(), standardErrorFromLevel: LogEventLevel.Information);
});

及用法:

var sensorInput = new { Latitude = 25, Longitude = 134 };
_logger.LogInformation("{@SensorInput}", sensorInput);

结果就是这样。如您所见,

sensorInput
信息同时位于@m字段和
SensorInput
字段中。我希望它只存在于 SensorInput 中,可以吗?

我还想将@t等特殊字段的名称更改为:时间戳,@m更改为消息等。有可能吗?

c# asp.net .net serilog
1个回答
0
投票

简短的回答是

RenderedCompactJsonFormatter
是相当硬连线的
Rendered
指的是也包含渲染形式的事实,即这是非常有意的(有不包含渲染输出的同级格式化程序,这可能适合您的用例)。

更一般地说,如果您想要更有趣的东西,

Serilog.Expressions
是完成这项工作的工具。自述文件非常完整(不要忘记总是有简洁的测试来说明事物)。尼克还写过一些文章,例如:

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