Visualizando logs de mensagem
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 à medida que for processada pelo WCF. Portanto, uma mensagem que está sendo registrada reflete apenas o conteúdo da mensagem no ponto em que ela foi registrada, não o conteúdo na transmissão.
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ê tiver configurado o registro em log de mensagens corretamente, qualquer mensagem registrada deverá 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 mensagem binária.
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. Recomendamos que você use a Ferramenta visualizador de rastreamento de serviço (SvcTraceViewer.exe) para exibir os arquivos de log de mensagens. Para obter mais informações sobre como usar essa ferramenta, consulte Como usar o Visualizador de Rastreamento de Serviço 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 realçadas em amarelo (nível de aviso) ou vermelho (nível de erro), dependendo da gravidade do erro. Clicar duas vezes na mensagem abre o rastreamento da mensagem no contexto da solicitação de processamento.
Observação
Se uma mensagem não tiver cabeçalho, nenhuma marca <header/>
será registrada.
Exibindo mensagens registradas por um cliente, uma retransmissão e um serviço
Seu ambiente pode conter um cliente, que envia uma mensagem para uma retransmissão, que posteriormente encaminha a mensagem para o serviço. Quando o log de mensagens estiver habilitado em todos os três locais e todos os três logs de mensagens forem exibidos na Ferramenta do Visualizador de Rastreamento de Serviço (SvcTraceViewer.exe) simultaneamente, as trocas de log de mensagens serão renderizadas incorretamente. Isso ocorre porque o cabeçalho de mensagem CorrelationId
e ActivityId
não são exclusivos para cada par de envio-recebimento.
Você pode usar um dos métodos a seguir para resolver esse problema.
Exiba apenas dois dos três logs de mensagens na Ferramenta do Visualizador de Rastreamento de Serviço (SvcTraceViewer.exe) so mesmo tempo.
Se você precisar exibir todos os três logs na Ferramenta do Visualizador de Rastreamento de Serviço (SvcTraceViewer.exe) ao mesmo tempo, poderá modificar o serviço de retransmissão criando uma nova instância Message. Essa instância deve ser uma cópia do corpo da mensagem de entrada, além de todos os cabeçalhos, exceto
ActivityId
eAction
. O código de exemplo a seguir demonstra como fazer isso.
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 excepcionais para conteúdo de registro em log de mensagens imprecisas
Nas condições a seguir, as mensagens registradas podem não ser a representação exata do fluxo de octeto presente no fio.
Para BasicHttpBinding, os cabeçalhos de envelope são registrados para as mensagens de entrada no namespace /addressing/none.
Espaços em branco podem ser incompatíveis.
Para mensagens de entrada, os elementos vazios podem ser representados de forma diferente. Por exemplo, <tag></tag> em vez de <tag/>
Quando o registro em log 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.