3

我目前正在使用 Serilog 将(记录应用程序)记录到 CouchDB 数据库,并且将一些类型分解到数据库中。

我有一个单独的应用程序(报告应用程序)试图将 LogEvents 从数据库中提取出来并将它们反序列化为原始 LogEvents。报告应用程序与日志记录应用程序一样知道相同的类型,并且数据库中的特定类型完全分解到其中。

Json.Net 的反序列化器在反序列化 MessageTemplate 时存在问题。即使使用自定义转换器,它也有很多问题,我可能做错了(反序列化的各种异常,但我无法分辨出真正的模式)。

有没有人能够成功地做到这一点?我的印象是能够从日志中提取类型是 Serilog 的功能之一,所有数据都在那里,所以我不明白为什么不可能。

这些类型也都是完全可序列化的,它们由 Json.net 定期序列化/反序列化。

4

1 回答 1

1

经过更多研究,我找到了部分解决问题的方法。使用http://json2csharp.com/生成新类- 将 RootObject 重命名为某个名称(例如,SpecificLogEvent)并使用:

var logEvent = JsonConvert.DeserializeObject<SpecificLogEvent>(doc.Value);

然后在需要的地方将对象转换为真实对象。我暂时不会将此标记为答案,因为我喜欢简单的来回并避免这个创建冗余类的额外步骤。

于 2015-10-30T06:06:19.940 回答