Partilhar via


Visualizando logs de mensagens

Este tópico descreve como você pode exibir logs de mensagens.

Exibindo logs de mensagens no Visualizador de Rastreamento de Serviço

Uma mensagem será transformada enquanto é processada pelo WCF. Portanto, uma mensagem que está sendo registrada reflete apenas o conteúdo da mensagem no ponto em que foi registrada, não o conteúdo no fio.

Como a saída do log de mensagens não tem relação com o formato de transferência da mensagem, o log de mensagens sempre gera a mensagem decodificada. Se você configurou o registro de mensagens corretamente, qualquer mensagem registrada deve estar em texto sem formatação. Por exemplo, o formato (texto sem formatação) das mensagens registradas não é afetado pelo uso de um codificador de mensagens binárias.

A saída do XmlWriterTraceListener é um arquivo que contém uma sequência de fragmentos XML. Você deve estar ciente de que o arquivo não é um arquivo XML válido. É recomendável que você use a ferramenta Service Trace Viewer Tool (SvcTraceViewer.exe) para exibir os arquivos de log de mensagens. Para obter mais informações sobre como usar essa ferramenta, consulte Usando o Service Trace Viewer para exibir rastreamentos correlacionados e solução de problemas.

No Visualizador de Rastreamento de Serviço, as mensagens são listadas na guia Mensagem . As mensagens que causaram ou estão relacionadas a um erro de processamento são destacadas em amarelo (nível de aviso) ou vermelho (nível de erro), dependendo da gravidade do erro. Clicar duas vezes na mensagem exibe o rastreamento de mensagem no contexto da solicitação de processamento.

Observação

Se uma mensagem não tiver cabeçalho, nenhuma <header/> tag será registrada.

Visualizando mensagens registradas por um cliente, um intermediário e um serviço

Seu ambiente pode conter um cliente, que envia uma mensagem para um retransmissor, que posteriormente encaminha a mensagem para o serviço. Quando o registro de mensagens estiver ativado em todos os três locais e todos os três logs de mensagens forem exibidos na Ferramenta Visualizador de Rastreamento de Serviço (SvcTraceViewer.exe) simultaneamente, as trocas de logs de mensagens serão exibidas incorretamente. Isso ocorre porque o CorrelationId e ActivityId no cabeçalho da mensagem não são exclusivos para cada par de envio-recebimento.

Você pode usar um dos seguintes métodos para resolver esse problema.

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);  
}  

Casos excecionais de conteúdo de registro de mensagens impreciso

Sob as seguintes condições, as mensagens que estão sendo registradas podem não ser a representação exata do fluxo de octeto presente no fio.

  • Para BasicHttpBinding, cabeçalhos de envelope são registados para as mensagens recebidas na namespace /addressing/none.

  • Os espaços em branco podem ser incompatíveis.

  • Para mensagens recebidas, os elementos vazios podem ser representados de forma diferente. Por exemplo, <tag></tag> em vez de <tag/>

  • Quando o registro de PII conhecido é desabilitado por padrão ou configuração explícita enableLoggingKnownPii="true".

  • A codificação está habilitada para transformação em UTF-8.

Ver também