Bagikan melalui


Mengonfigurasi Pelacakan

Topik ini menjelaskan bagaimana Anda dapat mengaktifkan pelacakan, mengonfigurasi sumber jejak 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 Pelacakan dan Pengelogan Pesan.

Penting

Pada Windows 8 Anda harus menjalankan aplikasi yang ditinggikan (Jalankan sebagai Administrator) agar aplikasi Anda menghasilkan log jejak.

Mengaktifkan Penelusuran

Windows Communication Foundation (WCF) menghasilkan data berikut untuk pelacakan diagnostik:

  • Jejak untuk proses milestone di semua komponen aplikasi, seperti panggilan operasi, pengecualian kode, peringatan, dan peristiwa pemrosesan signifikan lainnya.

  • Peristiwa kesalahan Windows 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 rakitan WCF. Sumber pelacakan System.ServiceModel adalah sumber pelacakan WCF yang paling umum, dan merekam pemrosesan milestone di seluruh tumpukan komunikasi WCF, dari memasukkan/meninggalkan transportasi hingga memasukkan/meninggalkan kode pengguna. Sumber jejak System.ServiceModel.MessageLogging merekam semua pesan yang mengalir melalui sistem.

Pelacakan tidak diaktifkan secara default. Untuk mengaktifkan pelacakan, Anda harus membuat pendengar pelacakan 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. Hal 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 di-hosting Web, atau Appname.exe.config untuk aplikasi yang di-hosting mandiri. Berikut ini adalah contoh pengeditan tersebut. Untuk informasi selengkapnya tentang pengaturan ini, lihat bagian "Mengonfigurasi Pendengar Jejak 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 di-hosting Web, atau Appname.exe.config untuk aplikasi yang di-hosting mandiri di Penjelajah Solusi. Lalu pilih item menu konteks Edit Konfigurasi WCF. Item ini meluncurkan Alat Editor Teks Konfigurasi (SvcConfigEditor.exe), yang memungkinkan Anda mengubah pengaturan konfigurasi untuk layanan WCF menggunakan antarmuka pengguna grafis.

Mengonfigurasi Sumber Jejak untuk Memancarkan Jejak

WCF mendefinisikan sumber jejak untuk setiap rakitan. Jejak yang dihasilkan dalam rakitan diakses oleh pendengar yang ditentukan untuk sumber tersebut. Sumber jejak 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 saat objek dibaca atau ditulis.

  • CardSpace.

Anda dapat mengonfigurasi setiap sumber jejak 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 jejak 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 jejak yang ditentukan pengguna, lihat Memperluas Pelacakan.

Mengonfigurasi Pendengar Jejak untuk Mengonsumsi Jejak

Pada durasi, WCF mengumpan data jejak ke pendengar, yang memproses data. WCF menyediakan beberapa pendengar yang telah ditentukan sebelumnya untuk System.Diagnostics, yang berbeda dalam format yang pendengar 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 traceListener Pendengar dan menambahkan pendengar jejak .NET Framework standar (System.Diagnostics.XmlWriterTraceListener) sebagai jenis yang ingin kami gunakan. Anda dapat menambahkan sejumlah pendengar jejak untuk setiap sumber. Jika pendengar jejak memancarkan jejak ke file, Anda harus menentukan lokasi dan nama file output dalam file konfigurasi. Penambahan ini dilakukan dengan mengatur initializeData ke nama file untuk pendengar tersebut. Nama file acak dihasilkan berdasarkan jenis pendengar yang digunakan jika Anda tidak menentukan nama file. 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 jejak kustom untuk mengirim jejak pada kabel, 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 alur, sumber jejak dapat mengunci sumber daya secara eksklusif saat menghasilkan jejak. Ketika banyak alur 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 alur.

Tingkat Jejak

Tingkat pelacakan dikontrol oleh pengaturan switchValue sumber jejak. Tingkat pelacakan yang tersedia dijelaskan dalam tabel berikut.

Tingkat Jejak 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 dicatat:

- OutOfMemoryException
- ThreadAbortException (runtime bahasa umum memanggil ThreadAbortExceptionHandler)
- StackOverflowException (tidak dapat ditangkap)
- ConfigurationErrorsException
- SEHException
- Kesalahan mulai aplikasi
- Peristiwa failfast
- Sistem macet
- Pesan racun: jejak pesan yang menyebabkan aplikasi gagal.
Administrator

Pengembang aplikasi
Error 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 dapat terjadi, tetapi aplikasi masih berfungsi dengan benar. Namun, hal ini mungkin tidak terus berfungsi dengan baik. - Aplikasi menerima lebih banyak permintaan daripada yang diizinkan oleh pengaturan pembatasannya.
- Antrean penerima mendekati kapasitas maksimum yang dikonfigurasi.
- Waktu habis telah terlampaui.
- Mandat ditolak.
Administrator

Pengembang aplikasi
Informasi Peristiwa "Positif": peristiwa yang menandai milestone yang berhasil Milestone penting dan sukses dari eksekusi aplikasi, terlepas dari apakah aplikasi berfungsi dengan baik atau tidak. Secara umum, pesan 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 memasuki /meninggalkan transportasi.
- Token diambil.
- Pengaturan konfigurasi dibaca.
Administrator

Pengembang aplikasi

Pengembang produk.
Verbose Peristiwa "Positif": peristiwa yang menandai milestone 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 Peristiwa alur 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 Nonaktif. Misalnya, pendengar 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 atribut switchValue 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 atribut switchValue 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.

Baik nilai Boolean propagateActivity maupun ActivityTracing berlaku untuk System.ServiceModel TraceSource. Nilai ActivityTracing juga berlaku untuk sumber jejak apa pun, termasuk WCF atau yang ditentukan pengguna.

Anda tidak dapat menggunakan atribut propagateActivity dengan sumber jejak yang ditentukan pengguna. Untuk penyebaran ID aktivitas kode pengguna, pastikan Anda tidak mengatur ActivityTracing ServiceModel, sambil tetap memiliki atribut propagateActivity ServiceModel yang diatur ke true.

Lihat juga