C# 如何从CouchDB中存储的Serilog反序列化LogEvents

C# 如何从CouchDB中存储的Serilog反序列化LogEvents,c#,.net,json.net,deserialization,serilog,C#,.net,Json.net,Deserialization,Serilog,我目前正在使用Serilog将(日志应用程序)日志记录到一个CouchDB数据库,并将一些类型分解到数据库中 我有一个单独的应用程序(报告应用程序),它试图将LogEvents从数据库中拉出来,并将它们反序列化为原始LogEvents。报告应用程序与日志应用程序一样了解相同的类型,并且数据库中的特定类型被完全分解为它 Json.Net的反序列化程序在反序列化MessageTemplate时遇到问题。即使使用自定义转换器,它也有很多问题,我可能是做错了(反序列化的各种异常,但我看不出真正的模式)

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

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

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

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


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

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

var logEvent=JsonConvert.DeserializeObject(doc.Value);
然后根据需要将对象转换为真实对象。 我暂时不会把这当作答案,因为我喜欢简单的来回操作,避免这个额外的步骤,因为这会创建冗余类

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