В каком формате создавать логи в профилировщиках? - PullRequest
0 голосов
/ 15 апреля 2011

В профилировщике, который я пишу, который на самом деле является агентом JVMTI для программ на Java, мне нужен формат для регистрации собранных событий.Далее эти журналы должны быть отправлены в сокет и прочитаны GUI где-нибудь еще.Поэтому мне нужна рабочая сериализация между двумя языками.

Я уже реализовал свой собственный протокол в XML, и он работал очень хорошо.Однако мне сказали, чтобы рассмотреть другой формат.Поскольку построение XML может быть очень медленным, и каждый дополнительный код, выполняемый в профилировщике, сильно влияет на профилированную программу.Это правда, но разве XML DOM Building занимает так много времени?

Я до сих пор использовал TinyXML.Я надеюсь, что никто не указывает на RapidXML, так как я надеюсь, что на не встроенных машинах нет ничего особенного.

Что вы думаете?В настоящее время я пытаюсь переопределить его с помощью protobuf, который утверждает, что он в n раз быстрее XML.

Ответы [ 2 ]

1 голос
/ 15 апреля 2011

У меня есть дизайн, над которым я работаю, для всех файлов журнала в моей сфере деятельности.Я записываю данные в 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 голосов
/ 15 апреля 2011

Мой первый выбор - это всегда традиционный текстовый файл.

вы можете добавлять новые записи в конец файла (внизу)

...