Просмотр журналов сообщений

В этом разделе описывается, как просматривать журналы сообщений.

Просмотр логов сообщений в обозревателе трассировки службы

Сообщение будет преобразовано в процессе обработки системой WCF. Таким образом, сообщение, заносяемое в журнал, отражает только содержимое сообщения в момент его записи, а не содержимое в проводной сети.

Так как выходные данные ведения журнала сообщений не имеют отношения к формату передачи сообщения, ведение журнала сообщений всегда выводит декодированные сообщения. Если вы правильно настроили ведение журнала сообщений, любое зарегистрированное сообщение должно находиться в виде обычного текста. Например, формат (обычный текст) зарегистрированных сообщений не влияет на использование двоичного кодировщика сообщений.

Выходные данные XmlWriterTraceListener — это файл, содержащий последовательность фрагментов XML. Следует учитывать, что файл не является допустимым XML-файлом. Рекомендуется использовать средство просмотра трассировки служб (SvcTraceViewer.exe) для просмотра файлов журнала сообщений. Дополнительные сведения об использовании этого средства можно найти в разделе "Использование средства просмотра трассировки службы для просмотра коррелированных трассировок и устранения неполадок".

В средстве просмотра трассировки службы сообщения отображаются на вкладке "Сообщение". Сообщения, которые вызвали или связаны с ошибкой обработки, выделены жёлтым (уровень предупреждения) или красным (уровень ошибки) в зависимости от серьезности ошибки. Двойной щелчок по сообщению открывает трассировку сообщения в контексте запроса на обработку.

Замечание

Если у сообщения нет заголовка, тег <header/> не регистрируется.

Просмотр сообщений, зарегистрированных клиентом, ретранслятором и службой

Ваша среда может содержать клиент, который отправляет сообщение ретранслятору, который впоследствии перенаправит сообщение в службу. Если ведение журнала сообщений включено во всех трех расположениях, а все три журнала сообщений отображаются одновременно в средстве просмотра трассировки служб (SvcTraceViewer.exe), обмен журналами сообщений будет неправильно отображаться. Это связано с тем, что CorrelationId и ActivityId в заголовке сообщения не являются уникальными для каждой пары отправки-приема.

Для устранения этой проблемы можно использовать один из следующих методов.

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

Исключительные случаи для содержимого неточного логирования сообщений

При следующих условиях регистрируемые сообщения могут не быть точным отражением октетового потока, присутствующего на линии.

  • Для BasicHttpBinding заголовки конвертов регистрируются для входящих сообщений в пространстве имен /addressing/none.

  • Пробелы могут не совпадать.

  • Для входящих сообщений пустые элементы могут быть представлены по-разному. Например, <тег></тег> вместо <тега/>

  • Если ведение журнала известных PII отключено по умолчанию или явным параметром, установите enableLoggingKnownPii="true".

  • Кодировка включена для преобразования в UTF-8.

См. также