我有 .netcore 3.1 webapi 并且我已经设置了 serilog 日志记录到 cloudwatch。我的配置看起来像:
{
"Serilog": {
"MinimumLevel": "Information",
"Enrich": "FromLogContext",
"Using": [
"SeriLog.Sinks.Console",
"AWS.Logger.SeriLog"
],
"WriteTo": [
{
"Name": "Console",
"Args": {
"outputTemplate": "{Timestamp:o} [{Level:u3}] {Scope} {Message:lj}{NewLine}{Exception}",
"formatter": "Serilog.Formatting.Compact.CompactJsonFormatter, Serilog.Formatting.Compact"
}
},
{
"Name": "AWSSeriLog"
}
]
},
"AllowedHosts": "*",
"ConnectionStrings": {
"Publisher": "base_publisher_setting"
},
"SnapshotDataDeleteOlderThanDays": 3,
"Logging": {
"Region": "eu-west-1",
"LogGroup": "publisher-test-api",
"LogLevel": {
"Default": "Information",
"System": "Information",
"Microsoft": "Information"
}
}
}
我在启动类中连接日志的代码如下所示:
Log.Logger = new LoggerConfiguration()
.ReadFrom.Configuration(_configuration)
.CreateLogger();
services.AddLogging(
builder => {
builder.AddSerilog(dispose: true);
}
);
我的日志记录如下:
_logger.LogInformation("summary for guid {snapShotId} summary count {count} {@summary}",snapShotId,summary.Count(),summary.Wrap());
wrap 扩展方法取自 https://github.com/serilog/serilog/issues/912#issuecomment-263267790
在 Rider 的控制台上,一切看起来都不错,我得到了解构的对象。但是在 cloudwatch 中我只得到对象类型。我确实读过 cloudwatch 不喜欢 @ 所以在我的 var {@summary} 中我尝试了 {summary} 但是仍然没有给我对象作为 json 并且它阻止控制台输出对象。
我错过了什么吗?