Partager via


Consultation des journaux de messages

Cette rubrique décrit comment afficher les journaux de messages.

Consultation des journaux de messages dans Service Trace Viewer

Un message sera transformé à mesure qu’il est traité par WCF. Par conséquent, un message enregistré reflète uniquement le contenu du message au moment où il a été enregistré, et non le contenu sur le réseau.

Étant donné que la sortie de la journalisation des messages n’a aucune relation avec le format de transfert du message, la journalisation des messages génère toujours le message décodé. Si vous avez configuré correctement la journalisation des messages, tout message journalisé doit être en texte brut. Par exemple, le format (texte brut) des messages consignés n’est pas affecté par l’utilisation d’un encodeur de message binaire.

La sortie de XmlWriterTraceListener est un fichier qui contient une séquence de fragments XML. Sachez que le fichier n’est pas un fichier XML valide. Il est recommandé d’utiliser l’outil Service Trace Viewer (SvcTraceViewer.exe) pour afficher les fichiers journaux des messages. Pour plus d’informations sur l’utilisation de cet outil, consultez Utilisation de la visionneuse de traces de service pour afficher les traces corrélées et la résolution des problèmes.

Dans la Visionneuse de suivi du service, les messages sont répertoriés sous l’onglet Message . Les messages qui ont provoqué ou sont liés à une erreur de traitement sont mis en surbrillance en jaune (niveau d’avertissement) ou rouge (niveau d’erreur), en fonction de la gravité de l’erreur. Le double-clic sur le message affiche la trace du message dans le contexte de la demande de traitement.

Remarque

Si un message n’a pas d’en-tête, aucune balise n’est <header/> enregistrée.

Affichage des messages enregistrés par un client, un relais et un service

Votre environnement peut contenir un client, qui envoie un message à un relais, qui transfère ensuite le message au service. Lorsque la journalisation des messages est activée sur les trois emplacements et que les trois journaux des messages sont affichés simultanément dans l’outil Visionneuse de trace de service (SvcTraceViewer.exe), les échanges de journaux de messages sont affichés de manière incorrecte. Cela est dû au fait que l’en-tête CorrelationId et ActivityId dans l’en-tête message ne sont pas uniques pour chaque paire d’envoi-réception.

Vous pouvez utiliser l’une des méthodes suivantes pour résoudre ce problème.

Message outgoingMessage = Message.CreateMessage(incomingMessage.Version, incomingMessage.Headers.Action, incomingMessage.GetReaderAtBodyContents());  
  
for (int i = 0; i < incomingMessage.Headers.Count; i++)  
{  
   if (incomingMessage.Headers[i].Name.Equals("ActivityId", StringComparison.InvariantCultureIgnoreCase) ||  
incomingMessage.Headers[i].Name.Equals("Action", StringComparison.InvariantCultureIgnoreCase))  
   {  
      continue;  
    }  
    outgoingMessage.Headers.CopyHeaderFrom(incomingMessage, i);  
}  

Cas exceptionnels de contenu de journalisation de message inexact

Dans les conditions suivantes, les messages enregistrés peuvent ne pas être la représentation exacte du flux d’octets présent sur le fil.

  • Pour BasicHttpBinding, les en-têtes d’enveloppe sont enregistrés pour les messages entrants dans l’espace de noms /addressing/none.

  • Les espaces blancs peuvent être incompatibles.

  • Pour les messages entrants, les éléments vides peuvent être représentés différemment. Par exemple, <tag></tag> au lieu de <tag/>

  • Lorsque la journalisation des informations personnelles connues est désactivée par défaut ou par paramètre explicite enableLoggingKnownPii="true ».

  • L’encodage est activé pour la transformation en UTF-8.

Voir aussi