Serilog 和 ExpandoObject

Serilog and ExpandoObject

如果我有这样的 ExpandoObject:

dynamic d = new ExpandoObject();
d.x = "a";
d.y = "b";

并使用 JsonFormatter 将其通过 Serilog 记录到 RollingFile,如下所示:

_logger.Debug("{@d}", d);

它将被序列化为 json 像这样:

[{"_typeTag":"KeyValuePair`2","Key":"x","Value":"a"},{"_typeTag":"KeyValuePair`2","Key":"y","Value":"b"}]

如果我使用 Newtonsoft.Json 像这样序列化相同的 ExpandoObject:

JsonConvert.SerializeObject(d)

我会得到这个:

{"x":"a","y":"b"}

如何让 Serilog 产生与 Newtonsoft.Json 相同的 json?

添加:

.Destructure.ByTransforming<ExpandoObject>(e => new Dictionary<string,object>(e))

你的 LoggerConfiguration 应该这样做。