Tracing and Message Logging
L’exemple TracingAndLogging illustre comment activer le suivi et l’enregistrement des messages. Les traces et les journaux des messages résultants sont affichés à l’aide de Service Trace Viewer Tool (SvcTraceViewer.exe). Cet exemple est basé sur la Prise en main.
Notes
La procédure d'installation ainsi que les instructions de génération relatives à cet exemple figurent à la fin de cette rubrique.
Traçage
WCF (Windows Communication Foundation) utilise le mécanisme de suivi défini dans l’espace de noms System.Diagnostics. Dans ce modèle de suivi, les données de suivi sont générées par les sources de suivi implémentées par les applications. Chacune de ces sources est identifiée à l'aide d'un nom. Les consommateurs de suivis créent des écouteurs pour les sources de suivi à partir desquelles ils souhaitent récupérer des informations. Pour recevoir des données de suivi d'une source, vous devez créer un écouteur pour cette source. Dans WCF, l’une des solutions consiste à ajouter le code suivant au fichier de configuration du service ou du client en définissant la source de suivi du modèle de service switchValue
:
<system.diagnostics>
<sources>
<source name="System.ServiceModel" switchValue="Information,ActivityTracing"
propagateActivity="true">
<listeners>
<add name="xml" />
</listeners>
</source>
<source name="System.ServiceModel.MessageLogging">
<listeners>
<add name="xml" />
</listeners>
</source>
</sources>
<sharedListeners>
<add initializeData="C:\logs\TracingAndLogging-service.svclog" type="System.Diagnostics.XmlWriterTraceListener"
name="xml" />
</sharedListeners>
<trace autoflush="true" />
</system.diagnostics>
Pour plus d’informations sur les sources de suivi, consultez la section Source de suivi dans la rubrique Configuration du traçage.
Suivi et propagation d'activité
L’activation de ActivityTracing
et l’affectation de la valeur true
à propagateActivity
dans les sources de suivi system.ServiceModel
du client et du service permettent de mettre en relation les suivis des unités logiques de traitement (activités), les suivis des activités propres à chaque point de terminaison (via le transfert des activités) et les suivis des activités impliquant plusieurs points de terminaison (via la propagation des ID d’activité).
Ces trois mécanismes (activités, transfert et propagation) peuvent vous permettre de localiser plus facilement la cause racine d’une erreur, notamment en utilisant l’outil Service Trace Viewer. Pour plus d’informations, consultez Utilisation de Service Trace Viewer pour afficher les suivis corrélés et résoudre les problèmes.
Il est possible d'étendre le suivi fourni par le ServiceModel en créant des suivis d'activité définis par l'utilisateur. Les suivis d'activité définis par l'utilisateur permettent :
De regrouper les suivis dans des unités logiques de travail.
De mettre en relation les activités à l'aide du transfert et de la propagation.
D’atténuer les pertes en termes de performances du suivi WCF (par exemple, de diminuer l’espace disque occupé par le stockage des journaux).
Pour plus d’informations sur les suivis d’activité définis par l’utilisateur, consultez l’exemple Extension du suivi.
Journalisation des messages
L’enregistrement des messages peut être activé à la fois sur le client et le service de toute application WCF. Pour activer l'enregistrement des messages, vous devez ajouter le code suivant au client ou au service :
<configuration>
<system.serviceModel>
<diagnostics>
<!-- Enable Message Logging here. -->
<!-- log all messages received or sent at the transport or service model levels -->
<messageLogging logEntireMessage="true"
maxMessagesToLog="300"
logMessagesAtServiceLevel="true"
logMalformedMessages="true"
logMessagesAtTransportLevel="true" />
</diagnostics>
</system.serviceModel>
</configuration>
Lorsqu'un message est enregistré, le type de suivi généré pour ce message n'est pas le même si ce message est suivi au niveau du client ou du serveur. Par exemple, le suivi du message « Add » est assuré dans la catégorie « TransportWrite », au niveau du client alors que son suivi est assuré dans la catégorie « TransportRead », au niveau du service.
Configurez l'écouteur de suivi en ajoutant le code suivant à la section System.Diagnostics du fichier App.config du client ou du fichier Web.config du service :
<system.diagnostics>
<sources>
<source name="System.ServiceModel" switchValue="Information,ActivityTracing"
propagateActivity="true">
<listeners>
<add name="xml" />
</listeners>
</source>
<source name="System.ServiceModel.MessageLogging">
<listeners>
<add name="xml" />
</listeners>
</source>
</sources>
<sharedListeners>
<add initializeData="C:\logs\TracingAndLogging-client.svclog" type="System.Diagnostics.XmlWriterTraceListener"
name="xml" />
</sharedListeners>
<trace autoflush="true" />
</system.diagnostics>
Les messages sont enregistrés au format XML dans le fichier de configuration stocké dans le répertoire cible spécifié.
Notes
Les fichiers de suivi ne peuvent pas être créés si un répertoire de journal n'est pas créé auparavant. Assurez-vous que le répertoire C:\logs\ existe ou définissez un autre répertoire d'enregistrement dans la configuration de l'écouteur. Consultez les instructions initiales de configuration figurant en fin de rubrique pour plus d'informations.
Pour plus d’informations sur la journalisation des messages, consultez la rubrique Configuration de la journalisation des messages.
Pour configurer, générer et exécuter l'exemple
Assurez-vous d’avoir effectué la Procédure d’installation unique pour les exemples Windows Communication Foundation.
Avant d'exécuter l'exemple Tracing and Message Logging, créez le répertoire C:\logs\ dans lequel le service stockera les fichiers .svclog. Le nom de ce répertoire est défini dans le fichier de configuration sous la forme d’un chemin d’accès indiquant où les suivis et les messages doivent être enregistrés. Ce chemin peut être modifié. Accordez à l'utilisateur des droits d'accès en écriture de service réseau au répertoire des journaux.
Pour générer l’édition C#, C++ ou Visual Basic .NET de la solution, suivez les instructions figurant dans Génération des exemples Windows Communication Foundation.
Pour exécuter l’exemple dans une configuration à un ou plusieurs ordinateurs, suivez les instructions figurant dans Exécution des exemples Windows Communication Foundation.