Компонент ведения журналов, который создает XML-журналы - PullRequest
2 голосов
/ 20 ноября 2008

Многие программы записывают вещи в текстовый файл в формате, подобном следующему:

11/19/2008 13:29:01 ОТЛАДКА Открытие соединения с localhost.

11/19/2008 13:29:01 ОТЛАДКА Отправка сообщения для входа в систему для пользователя 'ADMIN'.

11/19/2008 13:29:03 DEBUG Получен ответ для входа «OK» для пользователя «ADMIN».

...

Тем не менее, я предпочитаю что-то более структурированное, например XML, чтобы легче было анализировать журналы. Я делал это в своих программах VB6 / Asp Classic годами, и сейчас я хочу сделать это в .Net. Есть ли что-нибудь, что уже сделает это, или мне просто переписать код VB6 на C #?

Вот как выглядит вызов моего компонента журналирования для моих программ VB6:

Trace.Warn "MMain", "Main(command, other data)", "Deprecated command", _
    sCommandName, sOtherData

В результате получается следующая запись в журнале:

<Info time="11/17/2008 04:49:45 PM" mod="MMain" proc="Main" entry="Deprecated command" command="The_Bad_Command" other_data="The other data." />

Когда я хочу открыть журнал с помощью своего пользовательского средства просмотра журналов, я просто оборачиваю весь файл в корневой узел, и затем я могу легко сделать это с помощью MSXML, чтобы отфильтровать записи, которые я вижу, найти конкретного пользователя логин и тд и тп ...

<Log>
...the log file text...
</Log>

Ответы [ 4 ]

1 голос
/ 20 ноября 2008

Я не уверен ни в одном продукте, который делает это, но вы можете использовать log4net и написать свой собственный appender (обработчик вывода).

0 голосов
/ 19 ноября 2009

И log4j, и logback имеют XMLLayouts, которые могут генерировать фрагменты XML, которые затем могут быть обработаны Apache Chainsaw или Lillith.

0 голосов
/ 04 января 2009

Нет библиотеки, которая делает то, что я хочу. Я сделал один сам.

0 голосов
/ 20 ноября 2008

Библиотека Enteprise Блок журналирования предоставляет различные форматы журналирования, такие как xml, но это долгий путь для настройки и работы с ним

...