Udostępnij za pośrednictwem


Rozszerzanie śledzenia

W przykładzie ExtendingTracing pokazano, jak rozszerzyć funkcję śledzenia programu Windows Communication Foundation (WCF), zapisując ślady aktywności zdefiniowane przez użytkownika w kodzie klienta i usługi. Zapisywanie śladów działań zdefiniowanych przez użytkownika umożliwia użytkownikowi tworzenie działań śledzenia i grupowanie śladów w jednostkach logicznych pracy. Istnieje również możliwość korelowania działań za pośrednictwem transferów (w ramach tego samego punktu końcowego) i propagacji (między punktami końcowymi). W tym przykładzie śledzenie jest włączone zarówno dla klienta, jak i usługi. Aby uzyskać więcej informacji na temat włączania śledzenia w plikach konfiguracji klienta i usługi, zobacz Śledzenie i rejestrowanie komunikatów.

Ten przykład jest oparty na rozpoczynaniu pracy.

Uwaga

Procedura konfiguracji i instrukcje kompilacji dla tego przykładu znajdują się na końcu tego tematu.

Śledzenie i propagacja działań

Śledzenie aktywności zdefiniowane przez użytkownika umożliwia użytkownikowi tworzenie własnych działań śledzenia w celu grupowania śladów w jednostkach logicznych pracy, korelowania działań za pośrednictwem transferów i propagacji oraz zmniejszenia kosztów wydajności śledzenia WCF (na przykład kosztu miejsca na dysku pliku dziennika).

Dodawanie źródeł niestandardowych

Śledzenie zdefiniowane przez użytkownika można dodać zarówno do kodu klienta, jak i usługi. Dodanie źródeł śledzenia do plików konfiguracji klienta lub usługi umożliwia zarejestrowanie i wyświetlenie tych niestandardowych śladów w narzędziu podglądu śledzenia usługi (SvcTraceViewer.exe). Poniższy kod pokazuje, jak dodać źródło śledzenia zdefiniowane przez użytkownika o nazwie ServerCalculatorTraceSource do pliku konfiguracji.

<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>
....

Korelowanie działań

Aby skorelować działania bezpośrednio między punktami końcowymi, propagateActivity atrybut musi być ustawiony na true wartość w System.ServiceModel źródle śledzenia. Ponadto w celu propagowania śladów bez przechodzenia przez działania WCF należy wyłączyć śledzenie aktywności modelu ServiceModel. Można to zobaczyć w poniższym przykładzie kodu.

Uwaga

Wyłączenie śledzenia aktywności modelu ServiceModel nie jest takie samo, jak w przypadku poziomu śledzenia, oznaczonego switchValue przez właściwość, ustawionego na wartość wyłączone.

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

    ...

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

Obniżenie kosztów wydajności

Ustawienie ActivityTracing wyłączone w System.ServiceModel źródle śledzenia generuje plik śledzenia, który zawiera tylko ślady aktywności zdefiniowane przez użytkownika, bez żadnych uwzględnionych śladów działań ServiceModel. Wykluczanie śladów aktywności modelu ServiceModel powoduje znacznie mniejszy plik dziennika. Jednak możliwość korelowania śladów przetwarzania WCF zostanie utracona.

Konfigurowanie, kompilowanie i uruchamianie przykładu

  1. Upewnij się, że wykonano procedurę instalacji jednorazowej dla przykładów programu Windows Communication Foundation.

  2. Aby skompilować wersję rozwiązania w języku C# lub Visual Basic .NET, postępuj zgodnie z instrukcjami w temacie Building the Windows Communication Foundation Samples (Tworzenie przykładów programu Windows Communication Foundation).

  3. Aby uruchomić przykład w konfiguracji pojedynczej lub między komputerami, postępuj zgodnie z instrukcjami w temacie Uruchamianie przykładów programu Windows Communication Foundation.

Zobacz też