Teilen über


Erweitern der Ablaufverfolgung

Das ExtendTracing-Beispiel veranschaulicht, wie sie das Feature für die Windows Communication Foundation (WCF)-Ablaufverfolgung erweitern, indem benutzerdefinierte Aktivitätsablaufverfolgungen in Client- und Dienstcode geschrieben werden. Benutzerdefinierte Aktivitätsverfolgungen zu erstellen ermöglicht es dem Benutzer, Ablaufverfolgungen zu erstellen und diese in logische Arbeitseinheiten zu gruppieren. Es ist auch möglich, Aktivitäten über Übertragungen (innerhalb desselben Endpunkts) und Weitergabe (über Endpunkte hinweg) zu korrelieren. In diesem Beispiel ist die Ablaufverfolgung sowohl für den Client als auch für den Dienst aktiviert. Weitere Informationen zum Aktivieren der Ablaufverfolgung in Client- und Dienstkonfigurationsdateien finden Sie unter "Ablaufverfolgung" und "Nachrichtenprotokollierung".

Dieses Beispiel basiert auf den Ersten Schritten.

Hinweis

Die Einrichtungsschritte und Bauanleitungen für dieses Beispiel finden Sie am Ende dieses Abschnitts.

Ablaufverfolgung und Aktivitätsweitergabe

Die benutzerdefinierte Aktivitätsablaufverfolgung ermöglicht es dem Benutzer, eigene Ablaufverfolgungsaktivitäten zu erstellen, Ablaufverfolgungen in logische Arbeitseinheiten zu gruppieren, Aktivitäten durch Übertragungen und Verteilung zu korrelieren und die Leistungskosten der WCF-Ablaufverfolgung zu reduzieren (z. B. die Speicherplatzkosten einer Protokolldatei).

Hinzufügen von benutzerdefinierten Quellen

Benutzerdefinierte Ablaufverfolgungen können sowohl zu Client- als auch Dienstcode hinzugefügt werden. Durch das Hinzufügen von Ablaufverfolgungsquellen zu den Client- oder Dienstkonfigurationsdateien können diese benutzerdefinierten Ablaufverfolgungen aufgezeichnet und im Dienstablaufverfolgungs-Viewer-Tool (SvcTraceViewer.exe) angezeigt werden. Der folgende Code zeigt, wie Sie der Konfigurationsdatei eine benutzerdefinierte Tracequelle ServerCalculatorTraceSource hinzufügen.

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

Korrelieren von Aktivitäten

Zum Korrelieren von Aktivitäten direkt zwischen Endpunkten muss für das propagateActivity-Attribut in der true-Ablaufverfolgungsquelle der Wert System.ServiceModel festgelegt werden. Außerdem muss, um Ablaufverfolgungen weiterzugeben, ohne über WCF-Aktivitäten zu gehen, „ServiceModel-Aktivitätsablaufverfolgung“ deaktiviert werden. Dies ist im folgenden Codebeispiel zu sehen.

Hinweis

Das Deaktivieren von ServiceModel-Aktivitätsablaufverfolgung ist nicht dasselbe, wie die von der switchValue-Eigenschaft angegebene Ablaufverfolgungsebene zu deaktivieren.

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

    ...

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

Geringere Leistungskosten

Das Festlegen ActivityTracing auf "Aus" in der System.ServiceModel Ablaufverfolgungsquelle generiert eine Ablaufverfolgungsdatei, die nur benutzerdefinierte Aktivitätsablaufverfolgungen enthält, ohne dass eine der ServiceModel-Aktivitätsablaufverfolgungen enthalten ist. Das Ausschließen von ServiceModel-Aktivitätsablaufverfolgungen führt zu einer wesentlich kleineren Protokolldatei. Die Möglichkeit zum Korrelieren von WCF-Verarbeitungsablaufverfolgungen geht jedoch verloren.

Einrichten, Erstellen und Ausführen des Beispiels

  1. Stellen Sie sicher, dass Sie das One-Time Setup-Verfahren für die Windows Communication Foundation-Beispieleausgeführt haben.

  2. Um die C#- oder Visual Basic .NET-Edition der Lösung zu erstellen, befolgen Sie die Anweisungen in Building the Windows Communication Foundation Samples.

  3. Führen Sie das Beispiel in einer Einzel- oder computerübergreifenden Konfiguration aus, indem Sie die Anweisungen unter Ausführen der Windows Communication Foundation-Beispiele befolgen.

Siehe auch