2011-04-15 27 views
0

在我正在编写的事件探查器中,实际上它是Java程序的JVMTI代理程序,我需要一种格式来记录收集的事件。此外,这些日志必须发送到套接字并通过其他位置的GUI读取。所以我需要两种语言之间的工作序列化。哪种格式在探查器中创建日志?

我已经在XML中实现了我自己的协议,它工作得很好。不过,我被告知考虑另一种格式。由于XML构建可能非常缓慢,并且在Profiler中执行的每个附加代码都会严重影响配置文件程序。这是真的,但XML DOM Building需要那么久吗?

我到目前为止使用了TinyXML。我希望没有人指向RapidXML,因为我希望没有嵌入式的机器上有这种不同。

您认为如何?目前我正在试图用protobuf来重新实现它,声称比XML快n倍。

+0

探查器的目的是什么?如果目的是找到瓶颈(而不是仅仅测量速度),那么捕获的最有用的东西是随机或统一的挂钟时间(而不仅仅是CPU时间)的堆栈跟踪。 [这里是问题列表](http://stackoverflow.com/questions/1777556/alternatives-to-gprof/1779343#1779343)这就是[Zoom](http://www.rotateright.com/)所做的。获取大量样本并不是必需的。有一个热键来动态采样是非常有用的。 – 2011-04-15 10:51:52

回答

1

我有一个设计我的工作在我的职权范围的所有日志文件,追加新的条目。我用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格式正确时非常易读,它可以非常简洁,并且有稳定的解析器。

0

我的第一选择永远是传统的txt文件。

你可以在文件(底部)结束