Bagikan melalui


Pelacakan Analitik WCF

Sampel WCFAnalyticTracingExtensibility menunjukkan cara menambahkan kejadian pelacakan Anda sendiri ke dalam aliran pelacakan analitik yang ditulis oleh Windows Communication Foundation (WCF) ke ETW di .NET Framework. Jejak analitik dimaksudkan untuk memudahkan visibilitas ke layanan Anda tanpa membayar penalti berperforma tinggi. Contoh ini menunjukkan cara menggunakan API System.Diagnostics.Eventing untuk menulis kejadian yang terintegrasi dengan layanan WCF.

Untuk informasi selengkapnya tentang API System.Diagnostics.Eventing, lihat System.Diagnostics.Eventing.

Untuk mempelajari lebih lanjut pelacakan kejadian di Windows, lihat Meningkatkan Penelusuran Kesalahan dan Penyesuaian Performa dengan ETW.

Membuang EventProvider

Sampel ini menggunakan kelas System.Diagnostics.Eventing.EventProvider, yang mengimplementasikan System.IDisposable. Saat menerapkan pelacakan untuk layanan WCF, kemungkinan Anda dapat menggunakan sumber daya EventProvider untuk masa pakai layanan. Untuk alasan ini dan untuk keterbacaan, sampel ini tidak pernah membuang EventProvider yang dibungkus. Jika karena alasan tertentu layanan Anda memiliki persyaratan yang berbeda untuk pelacakan dan Anda harus membuang sumber daya ini, Anda harus memodifikasi sampel ini sesuai dengan praktik terbaik untuk membuang sumber daya yang tidak dikelola. Untuk informasi selengkapnya tentang cara membuang sumber daya yang tidak dikelola, lihat Menerapkan Metode Buang.

Hosting Mandiri vs. Hosting Web

Untuk layanan yang dihosting Web, pelacakan analitik WCF menyediakan bidang, yang disebut "HostReference", yang digunakan untuk mengidentifikasi layanan yang memunculkan jejak. Jejak pengguna yang dapat diperluas dapat berpartisipasi dalam model ini dan sampel ini menunjukkan praktik terbaik untuk melakukannya. Format referensi host Web ketika karakter pipa '|' benar-benar muncul dalam string yang dihasilkan dapat menjadi salah satu dari yang berikut:

  • Jika aplikasi tidak ada di root.

    <SiteName><ApplicationVirtualPath>|<ServiceVirtualPath>|<ServiceName>

  • Jika aplikasi ada di root.

    <SiteName>|<ServiceVirtualPath>|<ServiceName>

Untuk layanan yang dihosting sendiri, jejak analitik WCF tidak mengisi bidang "HostReference". Kelas WCFUserEventProvider dalam sampel ini berperilaku konsisten saat digunakan oleh layanan yang dihost sendiri.

Detail Kejadian Kustom

Manifes Penyedia Kejadian ETW WCF mendefinisikan tiga kejadian yang dirancang agar dimunculkan oleh pembuat layanan WCF dari dalam kode layanan. Tabel berikut menunjukkan rincian dari ketiga kejadian tersebut.

Kejadian Deskripsi ID Peristiwa
UserDefinedInformationEventOccurred Munculkan kejadian ini ketika sesuatu yang perlu diperhatikan terjadi dalam layanan Anda yang tidak menjadi masalah. Misalnya, Anda mungkin memunculkan kejadian setelah berhasil melakukan panggilan ke database. 301
UserDefinedWarningOccurred Munculkan kejadian ini saat terjadi masalah yang dapat mengakibatkan kegagalan pada masa mendatang. Misalnya, Anda mungkin memunculkan kejadian peringatan saat panggilan ke database gagal, tetapi Anda dapat memulihkannya dengan kembali ke penyimpanan data yang berlebihan. 302
UserDefinedErrorOccurred Keluarkan kejadian ini saat layanan Anda gagal berperilaku seperti yang diharapkan. Misalnya, Anda mungkin memunculkan kejadian jika panggilan ke database gagal dan Anda tidak dapat mengambil data dari tempat lain. 303

Untuk menggunakan sampel ini

  1. Dengan menggunakan Visual Studio, buka file solusi WCFAnalyticTracingExtensibility.sln.

  2. Untuk membangun solusi, tekan Ctrl+Shift+B.

  3. Untuk menjalankan solusi, tekan Ctrl+F5.

    Di browser Web, klik Calculator.svc. URI dokumen WSDL untuk layanan akan muncul di browser. Salin URI tersebut.

  4. Jalankan klien uji WCF (WcfTestClient.exe).

    Klien uji WCF (WcfTestClient.exe) terletak di \<Visual Studio Install Dir>\Common7\IDE\WcfTestClient.exe.

  5. Dalam klien uji WCF, tambahkan layanan dengan memilih File, lalu Tambahkan Layanan.

    Tambahkan alamat titik akhir di kotak input.

  6. Klik OK untuk menutup kotak dialog.

    Layanan ICalculator ditambahkan di panel kiri di bawah Proyek Layanan Saya.

  7. Buka aplikasi Pemantau Peristiwa.

    Sebelum menjalankan layanan, mulai Pemantau Kejadian dan pastikan bahwa log kejadian mendengarkan kejadian pelacakan yang dimunculkan dari layanan WCF.

  8. Dari menu Mulai, pilih Alat Administratif, lalu Pemantau Kejadian. Aktifkan log Analitik dan Debug.

  9. Dalam tampilan hierarki di Pemantau Kejadian, buka Pemantau Kejadian, Log Aplikasi dan Layanan, Microsoft, Windows, lalu Aplikasi Server-Aplikasi. Klik kanan Aplikasi Server-Aplikasi, pilih Tampilan, lalu Tampilkan Log Analitik dan Debug.

    Pastikan bahwa opsi Tampilkan Log Analitik dan Debug dicentang. Aktifkan log Analitik.

    Pada tampilan hierarki di Pemantau Kejadian, buka Pemantau Kejadian, Log Aplikasi dan Layanan, Microsoft, Windows, Aplikasi Server-Aplikasi, lalu Analitik. Klik kanan Analitik dan pilih Aktifkan Log.

  10. Uji layanan menggunakan Klien Uji WCF.

    1. Di WCF Test Client, klik dua kali Add() di bawah simpul layanan ICalculator.

      Metode Add() muncul di panel kanan dengan dua parameter.

    2. Ketik 2 untuk parameter pertama dan 3 untuk parameter kedua.

    3. Klik Panggil untuk memanggil metode.

  11. Buka jendela Pemantau Kejadian yang telah Anda buka. Navigasi ke Pemantau Peristiwa, Log Aplikasi dan Layanan, Microsoft, Windows, Aplikasi-Server Aplikasi.

  12. Klik kanan simpul Analitik dan pilih Refresh.

    Kejadian muncul di panel kanan.

  13. Temukan kejadian dengan ID 303 dan klik dua kali untuk membukanya dan periksa isinya.

    Kejadian ini dimunculkan oleh metode Add() layanan ICalculator dan memiliki payload yang sama dengan "2+3=5".

Untuk membersihkan (Opsional)

  1. Buka Pemantau Peristiwa.

  2. Buka Pemantau Kejadian, Log Aplikasi dan Layanan, Microsoft, Windows, lalu Aplikasi-Server-Aplikasi. Klik kanan Analitik dan pilih Nonaktifkan Log.

  3. Buka Pemantau Kejadian, Log Aplikasi dan Layanan, Microsoft, Windows, Aplikasi-Server-Aplikasi, lalu Analitik. Klik kanan Analitik dan pilih Hapus Log.

  4. Klik Hapus untuk menghapus kejadian.

Masalah yang diketahui

Ada masalah umum di Pemantau Kejadian di mana Pemantau Kejadian mungkin gagal melakukan dekode kejadian ETW. Anda mungkin melihat pesan kesalahan yang mengatakan: "Deskripsi untuk <id> ID Kejadian dari sumber Microsoft-Windows-Aplikasi Server-Aplikasi tidak dapat ditemukan. Komponen yang menaikkan kejadian ini tidak dipasang pada komputer lokal Anda atau penginstalan rusak. Anda dapat menginstal atau memperbaiki komponen di komputer lokal." Jika Anda mengalami kesalahan ini, pilih Refresh dari menu Tindakan. Kejadian kemudian harus melakukan dekode dengan benar.

Lihat juga