在我正在编写的探查器中,它实际上是 Java 程序的 JVMTI 代理,我需要一种格式来记录收集到的事件。此外,这些日志必须发送到套接字并由其他地方的 GUI 读取。所以我需要两种语言之间的有效序列化。
我已经在 XML 中实现了自己的协议(protocol),并且运行良好。但是我被告知要考虑另一种格式。由于 XML 构建可能非常缓慢,并且在分析器中执行的每个额外代码都会严重影响分析程序。这是事实,但是 XML DOM 构建需要那么长时间吗?
到目前为止,我使用的是 TinyXML。我希望没有人指出 RapidXML,因为我希望在非嵌入式机器上没有那么不同。
你怎么看?目前我正在尝试用 protobuf 重新实现它,它声称比 XML 快 n 倍。
最佳答案
我正在为我职权范围内的所有日志文件设计一个设计。我用 JSON 记录数据,但 JSON 数据嵌套在非常简单的 xml 格式中。
例如
<entry ts="2011-02-23T17:18:19.202" level="trc_1" typ="trace">New Message Received</entry>
<entry ts="2011-02-23T17:18:19.202" level="trace" typ="msg"><data>{"Name":"AgtConf","AgtId":1111,...}</data></entry>
这样我就可以很容易地分离出数据和日志记录,但又不会让日志记录目录变得复杂。还省去了为自定义格式编写自己的解析器的麻烦。但是,考虑到您的情况,我建议仅在您基本上使用序列化的情况下才使用 JSON。 JSON 在格式正确时非常易于人类阅读,它可以非常简洁,并且有稳定的解析器。
关于java - 在分析器中创建哪种格式的日志?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5674633/