可以通过在Serilog配置中添加Enrich.FromLogContext()来解决此问题。具体代码如下:
Log.Logger = new LoggerConfiguration()
.Enrich.FromLogContext()
.WriteTo.Console()
.WriteTo.Loggly()
.CreateLogger();
这个配置代码中的Enrich.FromLogContext()可以让Serilog在写入日志之前从日志上下文中提取json属性,确保Loggly能够正确地显示它们。
请注意,必须在日志记录之前配置Serilog。最好将其放在应用程序启动代码的开头。
带有json属性的日志记录如下:
var myJsonData = new { name = "John Doe", age = 37 };
_logger.Information("My log message {@MyJsonData}", myJsonData);
在Loggly上显示的日志如下:
My log message
{
"name": "John Doe",
"age": 37
}