Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В примере ExtendingTracing показано, как расширить функцию трассировки Windows Communication Foundation (WCF), написав определяемые пользователем трассировки действий в коде клиента и службы. Создание пользовательских трассировок действий позволяет пользователю создавать действия трассировки и группировать трассировки в логические единицы работы. Кроме того, можно сопоставить действия с помощью передачи (в пределах одной конечной точки) и распространения (между конечными точками). В этом примере трассировка включена как для клиента, так и для сервиса. Дополнительные сведения о включении трассировки в файлах конфигурации клиента и службы см. в разделе "Трассировка и ведение журнала сообщений".
Этот пример основан на Кратком руководстве.
Замечание
Инструкции по настройке и сборке этого примера находятся в конце этого раздела.
Распространение трассировки и активности
Определяемая пользователем трассировка действий позволяет пользователю создавать собственные действия трассировки для группирования трассировок в логические единицы работы, сопоставлять действия с помощью передачи и распространения, а также уменьшать затраты на производительность трассировки WCF (например, затраты на дисковое пространство файла журнала).
Добавление пользовательских источников
Определяемые пользователем трассировки можно добавлять как в код клиента, так и в код службы. Добавление источников трассировки в файлы конфигурации клиента или службы позволяет записывать и отображать эти пользовательские трассировки в средстве просмотра трассировки служб (SvcTraceViewer.exe). В следующем коде показано, как добавить определяемый пользователем источник трассировки с именем ServerCalculatorTraceSource
в файл конфигурации.
<system.diagnostics>
<sources>
<source name="System.ServiceModel" switchValue="Warning" propagateActivity="true">
<listeners>
<add type="System.Diagnostics.DefaultTraceListener" name="Default">
<filter type="" />
</add>
<add name="xml">
<filter type="" />
</add>
</listeners>
</source>
<source name="ServerCalculatorTraceSource" switchValue="Information,ActivityTracing">
<listeners>
<add type="System.Diagnostics.DefaultTraceListener" name="Default">
<filter type="" />
</add>
<add name="xml">
<filter type="" />
</add>
</listeners>
</source>
</sources>
<sharedListeners>
<add initializeData="C:\logs\ServerTraces.svclog" type="System.Diagnostics.XmlWriterTraceListener"
name="xml" traceOutputOptions="Callstack">
<filter type="" />
</add>
</sharedListeners>
<trace autoflush="true" />
</system.diagnostics>
....
Сопоставление действий
Чтобы коррелировать действия непосредственно между конечными точками, атрибут propagateActivity
должен быть задан true
в источнике System.ServiceModel
трассировки. Кроме того, для распространения трассировок без прохождения действий WCF необходимо отключить трассировку действий ServiceModel. Это можно увидеть в следующем примере кода.
Замечание
Отключение трассировки действий ServiceModel отличается от установки уровня трассировки, обозначенного свойством switchValue
, в положение "выключено".
<system.diagnostics>
<sources>
<source name="System.ServiceModel" switchValue="Warning" propagateActivity="true">
...
</source>
</sources>
</system.diagnostics>
Снижение затрат на производительность
Установка параметра ActivityTracing
в положение 'off' в источнике трассировки System.ServiceModel
создает файл трассировки, содержащий только пользовательские трассировки активности, без включения каких-либо трассировок активности ServiceModel. Исключение трассировок действий ServiceModel приводит к гораздо меньшему файлу журнала. Однако возможность коррелировать трассировки обработки WCF утрачивается.
Настройка, сборка и запуск примера
Убедитесь, что вы выполнили процедуру настройки One-Time для образцов Windows Communication Foundation.
Чтобы создать версию решения на C# или Visual Basic .NET, следуйте инструкциям по сборке примеров Windows Communication Foundation .
Чтобы запустить пример в конфигурации с одним или несколькими компьютерами, следуйте инструкциям в разделе "Примеры Windows Communication Foundation".