Поделиться через


Расширение трассировки

В примере 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 утрачивается.

Настройка, сборка и запуск примера

  1. Убедитесь, что вы выполнили процедуру настройки One-Time для образцов Windows Communication Foundation.

  2. Чтобы создать версию решения на C# или Visual Basic .NET, следуйте инструкциям по сборке примеров Windows Communication Foundation .

  3. Чтобы запустить пример в конфигурации с одним или несколькими компьютерами, следуйте инструкциям в разделе "Примеры Windows Communication Foundation".

См. также