Трассировка и ведение журнала сообщений
В примере ТрассировкиAndLogging показано, как включить ведение журнала трассировки и сообщений. Полученные трассировки и журналы сообщений отображаются с помощью средства просмотра трассировки службы (SvcTraceViewer.exe). Этот пример основан на начале работы.
Примечание.
Процедура настройки и инструкции по построению для данного образца приведены в конце этого раздела.
Трассировка
Windows Communication Foundation (WCF) использует механизм трассировки, определенный System.Diagnostics в пространстве имен. В этой модели трассировки данные трассировки создаются источниками трассировки, реализуемыми приложениями. Каждый источник определяется именем. Потребители трассировки создают прослушиватели трассировки для источников трассировки, для которых необходимо извлечь информацию. Чтобы получить данные трассировки, необходимо создать прослушиватель для источника трассировки. В WCF это можно сделать, добавив следующий код в файл конфигурации службы или клиента, задав источник switchValue
трассировки модели службы:
<system.diagnostics>
<sources>
<source name="System.ServiceModel" switchValue="Information,ActivityTracing"
propagateActivity="true">
<listeners>
<add name="xml" />
</listeners>
</source>
<source name="System.ServiceModel.MessageLogging">
<listeners>
<add name="xml" />
</listeners>
</source>
</sources>
<sharedListeners>
<add initializeData="C:\logs\TracingAndLogging-service.svclog" type="System.Diagnostics.XmlWriterTraceListener"
name="xml" />
</sharedListeners>
<trace autoflush="true" />
</system.diagnostics>
Дополнительные сведения о источниках трассировки см. в разделе "Источник трассировки" в разделе "Настройка трассировки ".
Трассировка и распространение действий
Включение ActivityTracing
и propagateActivity
установка true
в источниках трассировки для клиента и службы обеспечивают корреляцию трассировок в system.ServiceModel
логических единицах обработки (действий), между действиями в конечных точках (посредством передачи действий), а также между действиями, охватывающими несколько конечных точек (путем распространения идентификатора действия).
Эти три механизма (действия, перенаправление и распространение) могут помочь быстрее найти первопричину ошибки с использованием программы Service Trace Viewer. Дополнительные сведения см. в разделе "Использование средства просмотра трассировки службы" для просмотра коррелированных трассировок и устранения неполадок.
Возможно расширить трассировку, предоставляемую ServiceModel, создав пользовательские трассировки действий. Пользовательская трассировка действий позволяет пользователю создавать действия трассировки для следующих целей.
Группирование трассировок в логические блоки обработки.
Корреляция действий путем перенаправления и распространения.
Уменьшите затраты на производительность трассировки WCF (например, затраты на дисковое пространство файла журнала).
Дополнительные сведения о трассировке действий, определяемой пользователем, см. в примере трассировки расширения.
Ведение журналов сообщений
Ведение журнала сообщений можно включить как в клиенте, так и в службе любого приложения WCF. Чтобы включить ведение журнала сообщений, необходимо добавить следующий код в клиент или службу.
<configuration>
<system.serviceModel>
<diagnostics>
<!-- Enable Message Logging here. -->
<!-- log all messages received or sent at the transport or service model levels -->
<messageLogging logEntireMessage="true"
maxMessagesToLog="300"
logMessagesAtServiceLevel="true"
logMalformedMessages="true"
logMessagesAtTransportLevel="true" />
</diagnostics>
</system.serviceModel>
</configuration>
При записи сообщения тип трассировки зависит от того, трассируется оно на стороне клиента или сервера. Например, сообщение "Добавить", отправленное клиенту, трассируется в категории "TransportWrite" на стороне клиента, в то время как то же сообщение трассируется в категории "TransportRead" на стороне службы.
Настройте прослушиватель трассировки, добавив следующий код в раздел System.Diagnostics файла App.config клиента или файла Web.config службы.
<system.diagnostics>
<sources>
<source name="System.ServiceModel" switchValue="Information,ActivityTracing"
propagateActivity="true">
<listeners>
<add name="xml" />
</listeners>
</source>
<source name="System.ServiceModel.MessageLogging">
<listeners>
<add name="xml" />
</listeners>
</source>
</sources>
<sharedListeners>
<add initializeData="C:\logs\TracingAndLogging-client.svclog" type="System.Diagnostics.XmlWriterTraceListener"
name="xml" />
</sharedListeners>
<trace autoflush="true" />
</system.diagnostics>
Сообщения записываются в журнал в формате XML в целевом каталоге, указанном в файле конфигурации.
Примечание.
Файлы трассировки невозможно создать, если не создан каталог журнала. Убедитесь, что каталог C:\logs\ существует или укажите альтернативный каталог ведения журнала в конфигурации прослушивателя. Дополнительные сведения см. в первоначальных инструкциях по настройке, приведенных в конце данного документа.
Дополнительные сведения о ведении журнала сообщений см. в разделе "Настройка ведения журнала сообщений".
Настройка, сборка и выполнение образца
Убедитесь, что вы выполнили процедуру однократной установки для примеров Windows Communication Foundation.
Перед выполнением образца трассировки и ведения журнала сообщений создайте каталог C:\logs\, чтобы служба записывала данные в файлы с расширением SVCLOG. Имя этого каталога определяется в файле конфигурации как путь для трассировок и сообщений для записи в журнал, и его можно изменить. Предоставьте сетевой службе пользователя доступ к записи в каталог журналов.
Чтобы создать выпуск решения C#, C++или Visual Basic .NET, выполните инструкции по созданию примеров Windows Communication Foundation.
Чтобы запустить пример в конфигурации с одним или несколькими компьютерами, следуйте инструкциям в разделе "Примеры Windows Communication Foundation".