Mengonfigurasi Pelacakan
Topik ini menjelaskan bagaimana Anda dapat mengaktifkan pelacakan, mengonfigurasi sumber pelacakan untuk memancarkan jejak dan mengatur tingkat pelacakan, mengatur pelacakan dan penyebaran aktivitas untuk mendukung korelasi pelacakan end-to-end, dan mengatur pendengar jejak untuk mengakses jejak.
Untuk rekomendasi pengaturan pelacakan di lingkungan produksi atau penelusuran kesalahan, lihat Pengaturan yang Direkomendasikan untuk Penelusuran dan Pengelogan Pesan.
Penting
Pada Windows 8 Anda harus menjalankan aplikasi yang ditinggikan (Jalankan sebagai Administrator) agar aplikasi Anda menghasilkan log jejak.
Mengaktifkan Pelacakan
Windows Communication Foundation (WCF) menghasilkan data berikut untuk pelacakan diagnostik:
Jejak untuk pencapaian proses di semua komponen aplikasi, seperti panggilan operasi, pengecualian kode, peringatan, dan peristiwa pemrosesan signifikan lainnya.
Windows peristiwa kesalahan saat fitur pelacakan tidak berfungsi. Lihat Pengelogan Peristiwa.
Pelacakan WCF dibangun di atas System.Diagnostics. Untuk menggunakan pelacakan, Anda harus menentukan sumber pelacakan dalam file konfigurasi atau dalam kode. WCF mendefinisikan sumber pelacakan untuk setiap perakitan WCF. Sumber System.ServiceModel pelacakan adalah sumber pelacakan WCF yang paling umum, dan merekam pencapaian pemrosesan di seluruh tumpukan komunikasi WCF, dari memasukkan/meninggalkan transportasi hingga memasukkan/meninggalkan kode pengguna. Sumber System.ServiceModel.MessageLogging jejak merekam semua pesan yang mengalir melalui sistem.
Pelacakan tidak diaktifkan secara default. Untuk mengaktifkan pelacakan, Anda harus membuat pendengar jejak dan mengatur tingkat pelacakan selain "Nonaktif" untuk sumber pelacakan yang dipilih dalam konfigurasi; jika tidak, WCF tidak menghasilkan jejak apa pun. Jika Anda tidak menentukan pendengar, pelacakan akan dinonaktifkan secara otomatis. Jika pendengar didefinisikan, tetapi tidak ada tingkat yang ditentukan, tingkat diatur ke "Nonaktif" secara default, yang berarti bahwa tidak ada jejak yang dipancarkan.
Jika Anda menggunakan titik ekstensibilitas WCF seperti pemanggil operasi kustom, Anda harus memancarkan jejak Anda sendiri. Ini karena jika Anda menerapkan titik ekstensibilitas, WCF tidak dapat lagi memancarkan jejak standar di jalur default. Jika Anda tidak menerapkan dukungan pelacakan manual dengan memancarkan jejak, Anda mungkin tidak melihat jejak yang Anda harapkan.
Anda dapat mengonfigurasi pelacakan dengan mengedit file konfigurasi aplikasi—baik Web.config untuk aplikasi yang dihosting Web, atau Appname.exe.config untuk aplikasi yang dihost sendiri. Berikut ini adalah contoh pengeditan tersebut. Untuk informasi selengkapnya tentang pengaturan ini, lihat bagian "Mengonfigurasi Pelacakan Pendengar untuk Menggunakan Jejak".
<configuration>
<system.diagnostics>
<sources>
<source name="System.ServiceModel"
switchValue="Information, ActivityTracing"
propagateActivity="true">
<listeners>
<add name="traceListener"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData= "c:\log\Traces.svclog" />
</listeners>
</source>
</sources>
</system.diagnostics>
</configuration>
Catatan
Untuk mengedit file konfigurasi proyek layanan WCF di Visual Studio, klik kanan file konfigurasi aplikasi—baik Web.config untuk aplikasi yang dihosting Web, atau Appname.exe.config untuk aplikasi yang dihost sendiri di Penjelajah Solusi. Lalu pilih item menu konteks Edit Konfigurasi WCF . Ini meluncurkan Alat Editor Konfigurasi (SvcConfigEditor.exe), yang memungkinkan Anda mengubah pengaturan konfigurasi untuk layanan WCF menggunakan antarmuka pengguna grafis.
Mengonfigurasi Sumber Pelacakan untuk Memancarkan Jejak
WCF mendefinisikan sumber pelacakan untuk setiap perakitan. Jejak yang dihasilkan dalam perakitan diakses oleh pendengar yang ditentukan untuk sumber tersebut. Sumber pelacakan berikut didefinisikan:
System.ServiceModel: Mencatat semua tahap pemrosesan WCF, setiap kali konfigurasi dibaca, pesan diproses dalam transportasi, pemrosesan keamanan, pesan dikirim dalam kode pengguna, dan sebagainya.
System.ServiceModel.MessageLogging: Mencatat semua pesan yang mengalir melalui sistem.
System.IdentityModel.
System.ServiceModel.Activation.
System.IO.Log: Pengelogan untuk antarmuka .NET Framework ke Common Log File System (CLFS).
System.Runtime.Serialization: Mencatat kapan objek dibaca atau ditulis.
Cardspace.
Anda dapat mengonfigurasi setiap sumber pelacakan untuk menggunakan pendengar yang sama (bersama), seperti yang ditunjukkan dalam contoh konfigurasi berikut.
<configuration>
<system.diagnostics>
<sources>
<source name="System.ServiceModel"
switchValue="Information, ActivityTracing"
propagateActivity="true">
<listeners>
<add name="xml" />
</listeners>
</source>
<source name="CardSpace">
<listeners>
<add name="xml" />
</listeners>
</source>
<source name="System.IO.Log">
<listeners>
<add name="xml" />
</listeners>
</source>
<source name="System.Runtime.Serialization">
<listeners>
<add name="xml" />
</listeners>
</source>
<source name="System.IdentityModel">
<listeners>
<add name="xml" />
</listeners>
</source>
</sources>
<sharedListeners>
<add name="xml"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData="c:\log\Traces.svclog" />
</sharedListeners>
</system.diagnostics>
</configuration>
Selain itu, Anda dapat menambahkan sumber pelacakan yang ditentukan pengguna, seperti yang ditunjukkan oleh contoh berikut, untuk memancarkan jejak kode pengguna.
<system.diagnostics>
<sources>
<source name="UserTraceSource" switchValue="Warning, ActivityTracing" >
<listeners>
<add name="xml"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData="C:\logs\UserTraces.svclog" />
</listeners>
</source>
</sources>
<trace autoflush="true" />
</system.diagnostics>
Untuk informasi selengkapnya tentang membuat sumber pelacakan yang ditentukan pengguna, lihat Memperluas Pelacakan.
Mengonfigurasi Pelacakan Pendengar untuk Mengonsumsi Jejak
Pada durasi, WCF menyalurkan data pelacakan ke pendengar, yang memproses data. WCF menyediakan beberapa pendengar yang telah ditentukan sebelumnya untuk System.Diagnostics, yang berbeda dalam format yang mereka gunakan untuk output. Anda juga dapat menambahkan jenis pendengar kustom.
Anda dapat menggunakan add untuk menentukan nama dan jenis pendengar jejak yang ingin Anda gunakan. Dalam konfigurasi contoh kami, kami menamai Listener traceListener dan menambahkan pendengar jejak .NET Framework standar (System.Diagnostics.XmlWriterTraceListener) sebagai jenis yang ingin kami gunakan. Anda dapat menambahkan sejumlah listener jejak untuk setiap sumber. Jika pendengar jejak memancarkan jejak ke file, Anda harus menentukan lokasi dan nama file output dalam file konfigurasi. Ini dilakukan dengan mengatur initializeData ke nama file untuk pendengar tersebut. Jika Anda tidak menentukan nama file, nama file acak dihasilkan berdasarkan jenis pendengar yang digunakan. Jika XmlWriterTraceListener digunakan, nama file tanpa ekstensi dihasilkan. Jika Anda menerapkan pendengar kustom, Anda juga dapat menggunakan atribut ini untuk menerima data inisialisasi selain nama file. Misalnya, Anda dapat menentukan pengidentifikasi database untuk atribut ini.
Anda dapat mengonfigurasi pendengar pelacakan kustom untuk mengirim jejak pada kawat, misalnya, ke database jarak jauh. Sebagai penyebar aplikasi, Anda harus menerapkan kontrol akses yang tepat pada log jejak di komputer jarak jauh.
Anda juga dapat mengonfigurasi pendengar jejak secara terprogram. Untuk informasi selengkapnya, lihat Cara: Membuat dan Menginisialisasi Pendengar Jejak dan Membuat TraceListener Kustom.
Perhatian
Karena System.Diagnostics.XmlWriterTraceListener tidak aman untuk utas, sumber pelacakan dapat mengunci sumber daya secara eksklusif saat menghasilkan jejak. Ketika banyak utas menghasilkan jejak ke sumber jejak yang dikonfigurasi untuk menggunakan pendengar ini, ketidakcocokan sumber daya dapat terjadi, yang mengakibatkan masalah performa yang signifikan. Untuk mengatasi masalah ini, Anda harus menerapkan pendengar kustom yang aman untuk utas.
Tingkat Pelacakan
Tingkat pelacakan dikendalikan oleh switchValue pengaturan sumber pelacakan. Tingkat pelacakan yang tersedia dijelaskan dalam tabel berikut.
| Tingkat Pelacakan | Sifat Peristiwa terlacak | Konten Peristiwa terlacak | Peristiwa Terlacak | Target Pengguna |
|---|---|---|---|---|
| Nonaktif | T/A | T/A | Tidak ada jejak yang dipancarkan. | T/A |
| Kritis | Peristiwa "Negatif": peristiwa yang menunjukkan pemrosesan yang tidak terduga atau kondisi kesalahan. | Pengecualian yang tidak tertangani termasuk yang berikut ini dicatat: - OutOfMemoryException - ThreadAbortException (CLR memanggil ThreadAbortExceptionHandler) - StackOverflowException (tidak dapat ditangkap) - ConfigurationErrorsException - SEHException - Kesalahan mulai aplikasi - Kejadian failfast - Sistem macet - Pesan racun: jejak pesan yang menyebabkan aplikasi gagal. |
Administrator Pengembang aplikasi |
|
| Kesalahan | Peristiwa "Negatif": peristiwa yang menunjukkan pemrosesan yang tidak terduga atau kondisi kesalahan. | Pemrosesan tak terduga telah terjadi. Aplikasi tidak dapat melakukan tugas seperti yang diharapkan. Namun, aplikasi masih aktif dan berjalan. | Semua pengecualian dicatat. | Administrator Pengembang aplikasi |
| Peringatan | Peristiwa "Negatif": peristiwa yang menunjukkan pemrosesan yang tidak terduga atau kondisi kesalahan. | Kemungkinan masalah telah terjadi atau mungkin terjadi, tetapi aplikasi masih berfungsi dengan benar. Namun, ini mungkin tidak terus berfungsi dengan baik. | - Aplikasi menerima lebih banyak permintaan daripada pengaturan pembatasannya memungkinkan. - Antrean penerima mendekati kapasitas maksimum yang dikonfigurasi. - Waktu habis telah terlampaui. - Kredensial ditolak. |
Administrator Pengembang aplikasi |
| Informasi | Peristiwa "Positif": peristiwa yang menandai tonggak pencapaian yang berhasil | Tonggak penting dan sukses dari eksekusi aplikasi, terlepas dari apakah aplikasi berfungsi dengan baik atau tidak. | Secara umum, pesan yang berguna untuk memantau dan mendiagnosis status sistem, mengukur performa atau pembuatan profil dihasilkan. Anda dapat menggunakan informasi tersebut untuk perencanaan kapasitas dan manajemen performa: - Saluran dibuat. - Pendengar titik akhir dibuat. - Pesan masuk / meninggalkan transportasi. - Token keamanan diambil. - Pengaturan konfigurasi dibaca. |
Administrator Pengembang aplikasi Pengembang produk. |
| Verbose | Peristiwa "Positif": peristiwa yang menandai tonggak pencapaian yang berhasil. | Peristiwa tingkat rendah untuk kode pengguna dan layanan dipancarkan. | Secara umum, Anda dapat menggunakan tingkat ini untuk penelusuran kesalahan atau pengoptimalan aplikasi. - Memahami header pesan. |
Administrator Pengembang aplikasi Pengembang produk. |
| ActivityTracing | Flow peristiwa antara aktivitas pemrosesan dan komponen. | Tingkat ini memungkinkan administrator dan pengembang untuk menghubungkan aplikasi di domain aplikasi yang sama: - Jejak untuk batas aktivitas, seperti mulai/berhenti. - Jejak untuk transfer. |
Semua | |
| Semua | Aplikasi dapat berfungsi dengan baik. Semua peristiwa dipancarkan. | Semua peristiwa sebelumnya. | Semua |
Tingkat dari Verbose ke Kritis ditumpuk di atas satu sama lain, yaitu, setiap tingkat pelacakan mencakup semua tingkat di atasnya kecuali tingkat Off. Misalnya, listener yang mendengarkan di tingkat Peringatan menerima jejak Kritis, Kesalahan, dan Peringatan. Semua tingkat mencakup peristiwa dari Verbose ke peristiwa Pelacakan Kritis dan Aktivitas.
Perhatian
Tingkat Informasi, Verbose, dan ActivityTracing menghasilkan banyak jejak, yang dapat berdampak negatif pada throughput pesan jika Anda telah menggunakan semua sumber daya yang tersedia pada komputer.
Mengonfigurasi Pelacakan Aktivitas dan Penyebaran untuk Korelasi
Nilai activityTracing yang ditentukan untuk switchValue atribut digunakan untuk mengaktifkan pelacakan aktivitas, yang memancarkan jejak untuk batas aktivitas dan transfer dalam titik akhir.
Catatan
Saat Anda menggunakan fitur ekstensibilitas tertentu di WCF, Anda mungkin mendapatkan NullReferenceException saat pelacakan aktivitas diaktifkan. Untuk memperbaiki masalah ini, periksa file konfigurasi aplikasi Anda dan pastikan bahwa switchValue atribut untuk sumber pelacakan Anda tidak diatur ke activityTracing.
Atribut propagateActivity menunjukkan apakah aktivitas harus disebarluaskan ke titik akhir lain yang berpartisipasi dalam pertukaran pesan. Dengan mengatur nilai ini ke true, Anda dapat mengambil file pelacakan yang dihasilkan oleh dua titik akhir dan mengamati bagaimana sekumpulan jejak pada satu titik akhir mengalir ke sekumpulan jejak di titik akhir lain.
Untuk informasi selengkapnya tentang pelacakan dan penyebaran aktivitas, lihat Penyebaran.
Nilai propagateActivity Dan ActivityTracing Boolean berlaku untuk System.ServiceModel TraceSource. Nilai ini ActivityTracing juga berlaku untuk sumber pelacakan apa pun, termasuk WCF atau yang ditentukan pengguna.
Anda tidak dapat menggunakan propagateActivity atribut dengan sumber pelacakan yang ditentukan pengguna. Untuk penyebaran ID aktivitas kode pengguna, pastikan Anda tidak mengatur ServiceModel ActivityTracing, sambil tetap memiliki atribut ServiceModel propagateActivity yang diatur ke true.