Partager via


Étendre le traçage

L’exemple ExtendingTracing illustre comment étendre la fonctionnalité de traçage WCF (Windows Communication Foundation) en écrivant des traces d’activités définies par l’utilisateur dans le code du client et du service. L’écriture de traces d’activités définies par l’utilisateur permet à l’utilisateur de créer des activités de traces et de regrouper les traces dans des unités de travail logiques. Il est également possible de mettre en corrélation des activités à travers des transferts (au sein du même point de terminaison) et la propagation (sur plusieurs points de terminaison). Dans cet exemple, le suivi est activé à la fois pour le client et pour le service. Pour plus d’informations sur l’activation du traçage dans les fichiers de configuration du client et du service, consultez Traçage et journalisation des messages.

Cet exemple est basé sur la Prise en main.

Notes

La procédure d'installation ainsi que les instructions de génération correspondant à cet exemple figurent en fin de rubrique.

Suivi et propagation d'activité

Le traçage d’activité défini par l’utilisateur permet à l’utilisateur de créer ses propres activités de traces pour regrouper les traces dans des unités de travail logiques, mettre en corrélation des activités par transfert et propagation, et réduire les coûts de performance du traçage WCF (par exemple le coût en espace disque d’un fichier journal).

Ajouter des sources personnalisées

Les suivis définis par l'utilisateur peuvent être ajoutés à la fois au code du client et du service. L’ajout de sources de traces aux fichiers de configuration du client ou du service permet l’enregistrement et l’affichage de ces traces personnalisées dans Service Trace Viewer Tool (SvcTraceViewer.exe). Le code suivant montre comment ajouter une source de suivi définie par l'utilisateur nommée ServerCalculatorTraceSource au fichier de configuration.

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

Mettre en corrélation des activités

Pour mettre directement en corrélation des activités sur plusieurs points de terminaison, l'attribut propagateActivity doit avoir la valeur true dans la source du suivi System.ServiceModel. En outre, le traçage d’activité ServiceModel doit être désactivé pour propager des traces sans traverser des activités WCF. C'est ce qu'illustre l'exemple de code suivant.

Notes

La désactivation du suivi d'activité ServiceModel n'équivaut pas à désactiver le niveau de suivi, dénoté par la propriété switchValue.

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

    ...

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

Réduire les coûts de performances

Le fait de désactiver ActivityTracing dans la source de suivi System.ServiceModel génère un fichier de suivi qui contient uniquement les suivis d'activité définis par l'utilisateur, sans inclure les suivis d'activité ServiceModel. L’exclusion des traces d’activité ServiceModel génère un fichier journal beaucoup plus petit. Toutefois, la possibilité de mettre en corrélation les traces de traitement WCF est perdue.

Configurer, générer et exécuter l’exemple

  1. Assurez-vous d’avoir effectué la Procédure d’installation unique pour les exemples Windows Communication Foundation.

  2. Pour générer l’édition C# ou Visual Basic .NET de la solution, conformez-vous aux instructions figurant dans Building the Windows Communication Foundation Samples.

  3. Pour exécuter l’exemple dans une configuration à un ou plusieurs ordinateurs, suivez les instructions figurant dans Exécution des exemples Windows Communication Foundation.

Voir aussi