2012-05-28 3 views
9

У меня есть некоторые. Net WCF-сервисы. Для этих служб я настроил файл app.config для регистрации сообщений, отправленных и полученных в файле .svclog, который доступен для чтения с помощью «Инструмента просмотра служебных трасс» (SvcTraceViewer.exe). Этот инструмент визуально отображает файлы журнала, отображая обработанные сообщения SOAP..Net Журнал трассировки службы WCF с управлением файлами журналов (Rolling)

Я должен использовать прослушиватель System.Diagnostics.XmlWriterTraceListener, чтобы правильно форматировать файл .svclog для обработки с помощью средства просмотра трассировки служб.

Проблема заключается в том, что файл .svclog становится слишком большим. & Средство просмотра Trace Viewer становится непригодным из-за медленного времени отклика.

Средство просмотра Trace Viewer Tool предоставляет возможность разрешить открытие части файла журнала, если размер файла> 40 МБ, но это все еще слишком медленно. В файле app.config нет средства для настройки .svclog для автоматического создания нового файла каждый день или когда файл достигает определенного размера.

Существует прослушиватель текстовых журналов, называемый Microsoft.VisualBasic.Logging.FileLogTraceListener, который поддерживает logfilecreationschedule = «Ежедневное» свойство, которое ежедневно загружает файл журнала, однако полученный файл журнала из этого прослушивателя затруднен для лица, поддерживающего операцию для использования, поскольку записи журнала не отображаются хорошо, а большие документы xml способствуют путанице.

Что является лучшей практикой в ​​этой области, похоже, что мне, возможно, придется написать собственное расширение журнала WCF, которое кажется излишним, чтобы справиться с отсутствием функции рулона журнала в встроенной System.Diagnostics. XmlWriterTraceListener log listener/appender.

Я также экспериментировал со сценарием, чтобы остановить приложение и переименовать файлы журнала, но это не представляется возможным, поскольку в Windows утилиты handle.exe и openfile не могут закрыть файл, открытый через сетевой ресурс, поэтому я не может переименовать/переместить старый файл журнала, если кто-то просматривает его через сетевой ресурс. В ближайшее время опубликует отдельный вопрос.

Thanks, Matt.

+0

Хотя это выполнимо, вы не должны быть WCF трассировка включена все время. Он разработан как способ устранения неполадок и оказывает влияние на производительность. Отключить его в производственной среде - лучшая практика. –

ответ

9

Вы можете либо разработать себя, либо использовать уже существующий специализированный XmlWriterTraceListener или использовать механизм циклического отслеживания.

Существует специализированная реализация XmlWriterTraceListener, которая выполняет качение журнала трассировки на Codeproject:

http://www.codeproject.com/Articles/30956/A-Rolling-XmlWriterTraceListener

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

http://msdn.microsoft.com/en-us/library/aa395205.aspx

+0

Спасибо Серхио, вы либо действительно знаете, что ваш WCF, либо ваши возможности поиска в Интернете намного превосходят мои. Любой может, высоко оценил. Оба решения жизнеспособны. Не уверен, к чему я еще иду. Я могу попробовать оба. – MattG