Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cette rubrique explique comment activer le suivi, configurer des sources de trace pour émettre des traces et définir des niveaux de trace, définir le suivi d’activité et la propagation pour prendre en charge la corrélation de trace de bout en bout et définir des écouteurs de suivi pour accéder aux traces.
Pour obtenir des recommandations sur les paramètres de suivi dans l’environnement de production ou de débogage, reportez-vous aux paramètres recommandés pour le suivi et la journalisation des messages.
Importante
Sur Windows 8, vous devez exécuter votre application avec élévation de privilèges (Exécuter en tant qu’administrateur) pour que votre application génère des journaux de trace.
Activation du traçage
Windows Communication Foundation (WCF) génère les données suivantes pour le suivi de diagnostic :
Traces des jalons de processus dans tous les composants des applications, tels que les appels d’opération, les exceptions de code, les avertissements et d’autres événements de traitement importants.
Événements d’erreur Windows lorsque la fonctionnalité de suivi ne fonctionne pas correctement. Consultez journalisation des événements.
Le suivi WCF est construit sur System.Diagnostics. Pour utiliser le suivi, vous devez définir des sources de trace dans le fichier de configuration ou dans le code. WCF définit une source de trace pour chaque assembly WCF. La source de trace System.ServiceModel est la plus générale des sources de trace WCF et enregistre les jalons de traitement dans la pile de communication WCF, de l'entrée et la sortie du transport jusqu'à l'entrée et la sortie du code utilisateur. La System.ServiceModel.MessageLogging source de trace enregistre tous les messages qui transitent par le système.
Le suivi n’est pas activé par défaut. Pour activer le suivi, vous devez créer un écouteur de trace et définir un niveau de trace autre que « Désactivé » pour la source de trace sélectionnée dans la configuration ; sinon, WCF ne génère aucune trace. Si vous ne spécifiez pas d’écouteur, le suivi est automatiquement désactivé. Si un écouteur est défini, mais qu’aucun niveau n’est spécifié, le niveau est défini sur « Désactivé » par défaut, ce qui signifie qu’aucune trace n’est émise.
Si vous utilisez des points d’extensibilité WCF tels que des appelants d’opérations personnalisées, vous devez émettre vos propres traces. Cela est dû au fait que si vous implémentez un point d’extensibilité, WCF ne peut plus émettre les traces standard dans le chemin par défaut. Si vous n’implémentez pas la prise en charge du suivi manuel en émettant des traces, vous risquez de ne pas voir les traces attendues.
Vous pouvez configurer le suivi en modifiant le fichier de configuration de l’application , soit Web.config pour les applications hébergées sur le web, soit en Appname.exe.config pour les applications auto-hébergées. Voici un exemple de modification de ce type. Pour plus d'informations sur ces paramètres, consultez la section « Configuration d'écouteurs de suivi pour lire les suivis ».
<configuration>
<system.diagnostics>
<sources>
<source name="System.ServiceModel"
switchValue="Information, ActivityTracing"
propagateActivity="true">
<listeners>
<add name="traceListener"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData= "c:\log\Traces.svclog" />
</listeners>
</source>
</sources>
</system.diagnostics>
</configuration>
Remarque
Pour modifier le fichier de configuration d’un projet de service WCF dans Visual Studio, cliquez avec le bouton droit sur le fichier de configuration de l’application, soit Web.config pour les applications hébergées sur le web, soit Appname.exe.config pour une application auto-hébergée dans l’Explorateur de solutions. Choisissez ensuite l’élément de menu contextuel Modifier la configuration WCF . Cela lance l’outil Éditeur de configuration (SvcConfigEditor.exe), qui vous permet de modifier les paramètres de configuration des services WCF à l’aide d’une interface utilisateur graphique.
Configuration des sources de trace pour émettre des traces
WCF définit une source de trace pour chaque assembly. Les traces générées dans un assembly sont accessibles par les écouteurs définis pour cette source. Les sources de trace suivantes sont définies :
System.ServiceModel : journalise toutes les étapes du traitement WCF, chaque fois que la configuration est lue, un message est traité dans le transport, le traitement de sécurité, un message est distribué dans le code utilisateur, et ainsi de suite.
System.ServiceModel.MessageLogging : journalise tous les messages qui transitent par le système.
System.IdentityModel.
System.ServiceModel.Activation.
System.IO.Log : journalisation pour l’interface .NET Framework avec le Common Log File System (CLFS).
System.Runtime.Serialization : enregistre les événements lorsque les objets sont lus ou écrits.
CardSpace.
Vous pouvez configurer chaque source de trace pour utiliser le même écouteur (partagé), comme indiqué dans l’exemple de configuration suivant.
<configuration>
<system.diagnostics>
<sources>
<source name="System.ServiceModel"
switchValue="Information, ActivityTracing"
propagateActivity="true">
<listeners>
<add name="xml" />
</listeners>
</source>
<source name="CardSpace">
<listeners>
<add name="xml" />
</listeners>
</source>
<source name="System.IO.Log">
<listeners>
<add name="xml" />
</listeners>
</source>
<source name="System.Runtime.Serialization">
<listeners>
<add name="xml" />
</listeners>
</source>
<source name="System.IdentityModel">
<listeners>
<add name="xml" />
</listeners>
</source>
</sources>
<sharedListeners>
<add name="xml"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData="c:\log\Traces.svclog" />
</sharedListeners>
</system.diagnostics>
</configuration>
En outre, vous pouvez ajouter des sources de trace définies par l’utilisateur, comme illustré par l’exemple suivant, pour émettre des traces de code utilisateur.
<system.diagnostics>
<sources>
<source name="UserTraceSource" switchValue="Warning, ActivityTracing" >
<listeners>
<add name="xml"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData="C:\logs\UserTraces.svclog" />
</listeners>
</source>
</sources>
<trace autoflush="true" />
</system.diagnostics>
Pour plus d’informations sur la création de sources de trace définies par l’utilisateur, consultez Extension du suivi.
Configuration d'écouteurs de suivi pour consommer des suivis
Au moment de l’exécution, WCF alimente les données de trace aux écouteurs, qui traitent les données. WCF fournit plusieurs écouteurs prédéfinis pour System.Diagnostics, qui diffèrent dans le format utilisé pour la sortie. Vous pouvez également ajouter des types d’écouteurs personnalisés.
Vous pouvez utiliser add pour spécifier le nom et le type de l’écouteur de trace que vous souhaitez utiliser. Dans notre exemple de configuration, nous avons nommé l’écouteur traceListener et ajouté l’écouteur de trace .NET Framework standard (System.Diagnostics.XmlWriterTraceListener) comme type que nous voulons utiliser. Vous pouvez ajouter n’importe quel nombre d’écouteurs de trace pour chaque source. Si l’écouteur de suivi émet la trace vers un fichier, vous devez spécifier l’emplacement et le nom du fichier de sortie dans le fichier de configuration. Pour ce faire, définissez initializeData sur le nom du fichier pour cet écouteur. Si vous ne spécifiez pas de nom de fichier, un nom de fichier aléatoire est généré en fonction du type d’écouteur utilisé. Si XmlWriterTraceListener est utilisé, un nom de fichier sans extension est généré. Si vous implémentez un écouteur personnalisé, vous pouvez également utiliser cet attribut pour recevoir des données d’initialisation autres qu’un nom de fichier. Par exemple, vous pouvez spécifier un identificateur de base de données pour cet attribut.
Vous pouvez configurer un écouteur de suivi personnalisé pour envoyer des traces sur le câble, par exemple à une base de données distante. En tant que déployeur d’applications, vous devez appliquer un contrôle d’accès approprié sur les journaux de trace de l’ordinateur distant.
Vous pouvez également configurer un écouteur de trace par programmation. Pour plus d’informations, consultez Comment : Créer et Initialiser des Écouteurs de Trace et Créer un Écouteur de Trace Personnalisé.
Avertissement
Comme System.Diagnostics.XmlWriterTraceListener n’est pas thread-safe, la source de trace peut verrouiller les ressources exclusivement lors de l'émission des traces. Lorsque de nombreux threads génèrent des traces vers une source de trace configurée pour utiliser cet écouteur, la contention des ressources peut se produire, ce qui entraîne un problème de performances significatif. Pour résoudre ce problème, vous devez implémenter un écouteur personnalisé thread-safe.
Niveau de suivi
Le niveau de suivi est contrôlé par le switchValue paramètre de la source de trace. Les niveaux de suivi disponibles sont décrits dans le tableau suivant.
| Niveau de suivi | Nature des événements suivis | Contenu des événements suivis | Événements suivis | Cible de l’utilisateur |
|---|---|---|---|---|
| Éteint | N/A | N/A | Aucune trace n’est émise. | N/A |
| Essentiel | Événements « négatifs » : événements qui indiquent un traitement inattendu ou une condition d’erreur. | Les exceptions non gérées, notamment les suivantes, sont journalisées : - OutOfMemoryException - ThreadAbortException (le CLR appelle n’importe quel ThreadAbortExceptionHandler) - StackOverflowException (ne peut pas être intercepté) - ConfigurationErrorsException - SEHException - Erreurs de démarrage de l’application - Événements Failfast - Le système se bloque - Messages nuisibles : traces de messages entraînant l’échec de l’application. |
Administrateurs Développeurs d’applications |
|
| Erreur | Événements « négatifs » : événements qui indiquent un traitement inattendu ou une condition d’erreur. | Un traitement inattendu s'est produit. L’application n’a pas pu effectuer une tâche comme prévu. Toutefois, l’application est toujours opérationnelle. | Toutes les exceptions sont enregistrées. | Administrateurs Développeurs d’applications |
| Avertissement | Événements « négatifs » : événements qui indiquent un traitement inattendu ou une condition d’erreur. | Un problème possible s’est produit ou peut se produire, mais l’application fonctionne toujours correctement. Toutefois, il peut ne pas continuer à fonctionner correctement. | - L’application reçoit plus de demandes que ses paramètres de limitation autorisent. - La file d’attente de réception est proche de sa capacité maximale configurée. - Le délai d'attente a expiré. - Les informations d'identification sont rejetées. |
Administrateurs Développeurs d’applications |
| Informations | Événements « positifs » : événements qui marquent les jalons réussis | Jalons importants et réussis de l’exécution de l’application, que l’application fonctionne correctement ou non. | En général, les messages utiles pour surveiller et diagnostiquer l’état du système, la mesure des performances ou le profilage sont générés. Vous pouvez utiliser ces informations pour la planification de la capacité et la gestion des performances : - Les canaux sont créés. - Les écouteurs de point de terminaison sont créés. - Le message entre/quitte le système de transport. - Le jeton de sécurité est récupéré. - Le paramètre de configuration est lu. |
Administrateurs Développeurs d’applications Développeurs de produits. |
| Verbeux | Événements « positifs » : événements qui marquent les jalons réussis. | Les événements de bas niveau pour le code utilisateur et la maintenance sont émis. | En général, vous pouvez utiliser ce niveau pour le débogage ou l’optimisation des applications. - En-tête de message compris. |
Administrateurs Développeurs d’applications Développeurs de produits. |
| ActivityTracing | Flux d’événements entre les activités de traitement et les composants. | Ce niveau permet aux administrateurs et aux développeurs de mettre en corrélation les applications dans le même domaine d’application : - Traces des limites d’activité, telles que le démarrage/l’arrêt. - Traces pour les transferts. |
Tous | |
| Tous | L’application peut fonctionner correctement. Tous les événements sont émis. | Tous les événements précédents. | Tous |
Les niveaux de Verbose à Critique sont empilés les uns sur les autres, c’est-à-dire que chaque niveau de trace inclut tous les niveaux au-dessus de celui-ci, à l’exception du niveau Off. Par exemple, un écouteur qui écoute au niveau Avertissement reçoit les suivis des niveaux Critique, Erreur et Avertissement. Le niveau Tout inclut les événements du niveau Verbose au niveau Critique et les événements ActivityTracing.
Avertissement
Les niveaux Informations, Commentaires et ActivityTracing génèrent de nombreux suivis, ce qui peut avoir un impact négatif sur le débit des messages si vous avez utilisé toutes les ressources disponibles sur l'ordinateur.
Configuration du suivi et de la propagation des activités pour la corrélation
La valeur activityTracing spécifiée pour l'attribut switchValue est utilisée pour activer le suivi d'activité, qui émet des suivis pour les transferts et limites d'activité dans les points de terminaison.
Remarque
Lorsque vous utilisez certaines fonctionnalités d’extensibilité dans WCF, il se peut que vous rencontriez un NullReferenceException lorsque le suivi d’activité est activé. Pour résoudre ce problème, vérifiez le fichier de configuration de votre application et vérifiez que l’attribut switchValue de votre source de trace n’est pas défini activityTracingsur .
L’attribut propagateActivity indique si l’activité doit être propagée à d’autres points de terminaison qui participent à l’échange de messages. En définissant cette valeur sur true, vous pouvez prendre des fichiers de trace générés par deux points de terminaison et observer comment un ensemble de traces d'un point de terminaison a circulé vers un ensemble de traces d'un autre point de terminaison.
Pour plus d’informations sur le suivi et la propagation des activités, consultez Propagation.
Les valeurs booléennes propagateActivity et ActivityTracing s’appliquent à System.ServiceModel TraceSource. La ActivityTracing valeur s’applique également à toute source de trace, y compris WCF ou définie par l’utilisateur.
Vous ne pouvez pas utiliser l’attribut avec des sources de trace définies par l’utilisateur propagateActivity . Pour la propagation de l’ID d’activité du code utilisateur, veillez à ne pas définir ServiceModel ActivityTracing, tout en conservant l’attribut ServiceModel propagateActivity défini sur true.