Поделиться через


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

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

Просмотр журналов сообщений с помощью программы Service Trace Viewer

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

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

Выходные данные прослушивателя XmlWriterTraceListener представляют собой файл, содержащий последовательность XML-фрагментов. Необходимо иметь в виду, что этот файл не является допустимым файлом XML. Для просмотра файлов журналов сообщений рекомендуется использовать Программа Service Trace Viewer (SvcTraceViewer.exe). Дополнительные сведения об использовании этой программы см. в разделе Использование программы Service Trace Viewer для просмотра скоррелированных трассировок и устранения неполадок.

В программе Service Trace Viewer сообщения содержатся на вкладке Сообщение. Сообщения, которые вызвали ошибку обработки или связаны с ошибкой обработки, выделяются желтым (уровень предупреждения) или красным (уровень ошибки) цветом, в зависимости от серьезности ошибки. При двойном щелчке на сообщении открывается трассировка сообщения в контексте запроса на обработку.

ms730918.note(ru-ru,VS.100).gifПримечание
Если сообщение не имеет заголовка, тег <header/> в журнал не записывается.

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

Конкретная среда может содержать клиент, который отправляет сообщение ретранслятору, который в свою очередь пересылает сообщение службе. Если регистрация сообщений включена во всех трех точках и все три журнала сообщений одновременно просматриваются в Программа Service Trace Viewer (SvcTraceViewer.exe), обмен сообщениями в журнале будет отражен неправильно. Это связано с тем, что идентификаторы CorrelationId и ActivityId в заголовке сообщения не являются уникальными для каждой пары "отправка-получение".

Решить эту проблему можно одним из следующих способов.

  • Одновременно просматривать в Программа Service Trace Viewer (SvcTraceViewer.exe) только два из трех журналов сообщений.

  • Если требуется просматривать в Программа Service Trace Viewer (SvcTraceViewer.exe) одновременно все три журнала, можно изменить службу-ретранслятор путем создания нового экземпляра класса Message. Этот экземпляр должен представлять собой копию тела входящего сообщения плюс все заголовки, за исключением заголовков ActivityId и Action. В следующем примере кода показано, как это сделать.

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.

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

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

  • Когда отключена регистрация известных персональных данных (по умолчанию или путем явного задания enableLoggingKnownPii="true").

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

См. также

Основные понятия

Программа Service Trace Viewer (SvcTraceViewer.exe)
Использование программы Service Trace Viewer для просмотра скоррелированных трассировок и устранения неполадок

Другие ресурсы

Ведение журнала сообщений