Bagikan melalui


Mengonfigurasi Trasing

Topik ini menjelaskan bagaimana Anda dapat mengaktifkan pelacakan, mengonfigurasi sumber pelacakan untuk menghasilkan jejak dan mengatur tingkat pelacakan, mengatur pelacakan dan penyebaran aktivitas untuk mendukung korelasi pelacakan end-to-end, serta mengatur pendengar pelacakan untuk akses 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:

  • Pelacakan pencapaian proses di semua komponen aplikasi, seperti panggilan fungsional, pengecualian kode, peringatan, dan peristiwa pemrosesan penting lainnya.

  • Peristiwa kesalahan Windows ketika fitur pelacakan tidak berfungsi. Lihat Pengelogan Peristiwa.

Pelacakan WCF berbasis 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 System.ServiceModel pelacakan adalah sumber pelacakan WCF yang paling umum, dan mencatat tonggak 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 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. 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 Mengonsumsi 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>

Nota

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 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 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 Pendengar Lacak untuk Mengonsumsi Pelacakan

Saat runtime, WCF mengumpankan data pelacakan ke pendengar, yang memproses data. WCF menyediakan beberapa listener 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 listener pelacakan .NET Framework standar (System.Diagnostics.XmlWriterTraceListener) sebagai jenis yang ingin kami gunakan. Anda dapat menambahkan sejumlah pendengar pelacakan 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 listener 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 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 pelacak dapat mengunci sumber daya hanya untuk digunakan secara eksklusif saat menghasilkan jejak. Ketika banyak alur mengeluarkan jejak ke sumber pelacakan 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 Jejak

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

Tingkat Jejak Sifat Peristiwa yang Dilacak Konten Peristiwa yang Dilacak Peristiwa Terlacak Target Pengguna
Nonaktif Tidak tersedia Tidak tersedia Tidak ada jejak yang dipancarkan. Tidak tersedia
Penting Peristiwa "Negatif": peristiwa yang menunjukkan pemrosesan tak terduga atau kondisi kesalahan. Pengecualian yang tidak tertangani termasuk yang berikut ini dicatat:

- OutOfMemoryException
- ThreadAbortException (CLR memanggil semua ThreadAbortExceptionHandler)
- StackOverflowException (tidak dapat ditangkap)
- PengecualianKonfigurasiKesalahan
- SEHException
Kesalahan saat memulai aplikasi
- Peristiwa sistem berhenti secara cepat
- Sistem macet
- Pesan racun: jejak pesan yang menyebabkan aplikasi gagal.
Administrator

Pengembang aplikasi
Kesalahan Peristiwa "Negatif": peristiwa yang menunjukkan pemrosesan tak 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 tak terduga atau kondisi kesalahan. Kemungkinan masalah telah terjadi atau mungkin terjadi, tetapi aplikasi masih berfungsi dengan benar. Namun, mungkin tidak terus berfungsi dengan baik. - Aplikasi menerima lebih banyak permintaan daripada pengaturan pembatasannya memungkinkan.
- Antrean penerima mendekati kapasitas maksimum yang dikonfigurasi.
- Batas waktu telah terlewati.
- Kredensial ditolak.
Administrator

Pengembang aplikasi
Informasi Peristiwa "Positif": peristiwa yang menandai tonggak pencapaian yang berhasil Tonggak penting dan berhasil 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 telah dibuat.
- Pendengar endpoint telah dibuat.
- Pesan memasuki/meninggalkan transportasi.
- Token keamanan diambil.
- Pengaturan konfigurasi dibaca.
Administrator

Pengembang aplikasi

Pengembang produk.
Verbositas Peristiwa "Positif": peristiwa yang menandai tonggak pencapaian yang berhasil. Peristiwa tingkat rendah untuk kode pengguna dan pemeliharaan dihasilkan. Secara umum, Anda dapat menggunakan tingkat ini untuk penelusuran kesalahan atau pengoptimalan aplikasi.

Saya memahami header pesan.
Administrator

Pengembang aplikasi

Pengembang produk.
Pelacakan Aktivitas 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 tersusun secara bertingkat, yaitu, setiap level pelacakan mencakup semua level di atasnya kecuali level Off. Misalnya, pendengar yang mendengarkan di tingkat Peringatan menerima jejak Kritis, Kesalahan, dan Peringatan. Semua tingkat mencakup peristiwa dari Verbose hingga Kritikal dan peristiwa pelacakan Aktivitas.

Perhatian

Level Informasi, Verbose, dan ActivityTracing menghasilkan banyak log, yang dapat berdampak negatif pada throughput pesan jika Anda telah menghabiskan semua sumber daya yang tersedia di komputer.

Mengonfigurasi Pelacakan Aktivitas dan Penyebaran untuk Korelasi

Nilai atribut activityTracing yang ditentukan digunakan untuk mengaktifkan pelacakan aktivitas, yang menghasilkan jejak untuk batas aktivitas dan transfer antar titik akhir.

Nota

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.

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

Anda tidak dapat menggunakan propagateActivity atribut dengan sumber pelacakan yang ditentukan pengguna. Untuk propagasi ID aktivitas kode pengguna, pastikan Anda tidak menetapkan ServiceModel ActivityTracing, sementara atribut ServiceModel propagateActivity tetap diatur ke true.

Lihat juga