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

В примере 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 не эквивалентно указанию значения off для уровня трассировки, обозначаемого свойством switchValue.

<system.diagnostics>
    <sources>
      <source name="System.ServiceModel" switchValue="Warning" propagateActivity="true">

    ...

       </source>
    </sources>
</system.diagnostics>

Снижение затрат на производительность

Установка для свойства ActivityTracing значения off в трассировке System.ServiceModel создает файл трассировки, который содержит только пользовательские трассировки действий без включения каких-либо трассировок действий ServiceModel. Исключение трассировок действий ServiceModel приводит к гораздо меньшему файлу журнала. Однако возможность коррелировать трассировки обработки WCF теряется.

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

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

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

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

См. также