我在我的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更改为消息等。有可能吗?
RenderedCompactJsonFormatter
是相当硬连线的。 Rendered
指的是也包含渲染形式的事实,即这是非常有意的(有不包含渲染输出的同级格式化程序,它们解决了问题的“较少冗余的内容”部分,但不是您的全部需求)。
Serilog.Expressions
是完成这项工作的工具。自述文件非常完整(不要忘记总是有简洁的测试来说明事物)。尼克还写过一些文章,例如: