java - 在分析器中创建哪种格式的日志?

标签 java c++ xml profiling protocol-buffers

在我正在编写的探查器中,它实际上是 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/

相关文章:

c++ - 基于像素的 3D 可视化

c++ - 在不发送任何内容的情况下获取函数的返回值

java - Axis2 - 日期格式

javascript - 使用 Jquery/Javascript 访问嵌入在 XML 中的 JSON

java - 在 java 中将两个字节(一个正数和另一个负数)组合成 short

java - Hibernate:没有 id 生成器的缺点?

java - 需要 java 泛型参数列表 <T> 的帮助

c++ - 生成数据的类似迭代器的概念

java - 广播类未接收到 BOOT_COMPLETED 的广播 Intent

java - Jackson XmlMapper.config() 不起作用