在 Serilog 中记录字典,其中值类型是 class

Log a Dictionary in Serilog, where Value type is a class

我有一个 Dictionary<string, object>,其中的值属于不同的 class 类型。当我尝试记录词典时,内容显示不正确。

_logger.LogInformation("Printing Dictionary: {@myDictionary}", myDictionary);

结果

Printing Dictionary: {"KEY1":{"$type" : "ClassNameOne"}, {"KEY2":{"$type" : "ClassNameTwo"}}

想要的结果是{"KEY1":{"ClassOnesFirstProperty" : "PropertyValue","ClassOnesSecondProperty" : "PropertyValue"}, {"KEY2":{"ClassTwosFirstProperty" : "PropertyValue"}}

或者至少是向我展示实际数据的东西。我怎样才能做到这一点?

一个解决方案:在记录字典之前将其序列化。所以,

_logger.LogInformation("Printing Dictionary: {@myDictionary}", myDictionary);

应该变成

_logger.LogInformation("Printing Dictionary: {@myDictionary}", JsonConvert.SerializeObject(myDictionary));