Melihat Pencatatan Pesan

Topik ini menjelaskan bagaimana Anda dapat melihat log pesan.

Menampilkan Log Pesan di Penampil Pelacakan Layanan

Pesan akan diubah saat diproses oleh WCF. Oleh karena itu, pesan yang dicatat hanya mencerminkan konten pesan pada saat dicatat, bukan konten pada kawat.

Karena output pengelogan pesan tidak memiliki hubungan dengan format transfer pesan, pengelogan pesan selalu menghasilkan pesan yang didekodekan. Jika Anda telah mengonfigurasi pengelogan pesan dengan benar, pesan yang dicatat harus dalam teks biasa. Misalnya, format (teks biasa) pesan yang dicatat tidak terpengaruh oleh penggunaan encoder pesan biner.

Keluaran dari XmlWriterTraceListener adalah sebuah file yang berisi urutan fragmen XML. Anda harus menyadari bahwa file tersebut bukan file XML yang valid. Disarankan agar Anda menggunakan Alat Penampil Pelacakan Layanan (SvcTraceViewer.exe) untuk melihat file log pesan. Untuk informasi selengkapnya tentang cara menggunakan alat ini, lihat Menggunakan Penampil Pelacakan Layanan untuk Melihat Jejak dan Pemecahan Masalah yang Berkorelasi.

Di Penampil Pelacakan Layanan, pesan tercantum di tab Pesan . Pesan yang telah menyebabkan, atau terkait dengan, kesalahan pemrosesan disorot dengan warna kuning (tingkat peringatan) atau merah (tingkat kesalahan), tergantung pada tingkat keparahan kesalahan. Mengklik dua kali pada pesan memunculkan jejak pesan dalam konteks permintaan pemrosesan.

Nota

Jika pesan tidak memiliki header, tidak ada <header/> tag yang dicatat.

Menampilkan Pesan yang Dilog oleh Klien, Relay, dan Layanan

Lingkungan Anda mungkin berisi klien, yang mengirim pesan ke relai, yang kemudian meneruskan pesan ke layanan. Ketika pengelogan pesan diaktifkan di ketiga lokasi, dan ketiga log pesan ditampilkan di Service Trace Viewer Tool (SvcTraceViewer.exe) secara bersamaan, pertukaran log pesan akan salah dirender. Ini karena CorrelationId dan ActivityId di header Pesan tidak unik untuk setiap pasangan kirim-terima.

Anda dapat menggunakan salah satu metode berikut untuk mengatasi masalah ini.

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

Kasus Luar Biasa untuk Konten Pengelogan Pesan yang Tidak Akurat

Dalam kondisi berikut, pesan yang dicatat mungkin bukan representasi yang tepat dari aliran oktet yang ada di kawat.

  • Untuk BasicHttpBinding, header sampul dicatatkan untuk pesan masuk di ruang nama /addressing/none.

  • Spasi kosong dapat tidak cocok.

  • Untuk pesan masuk, elemen kosong dapat diwakili secara berbeda. Misalnya, <tag></tag> alih-alih <tag/>

  • Ketika pengelogan PII yang diketahui dinonaktifkan baik secara default atau pengaturan eksplisit enableLoggingKnownPii="true".

  • Pengodean diaktifkan untuk mengubah ke UTF-8.

Lihat juga