Lacak Pendengar
Catatan
Artikel ini khusus untuk .NET Framework. Ini tidak berlaku untuk implementasi .NET yang lebih baru, termasuk .NET 6 dan versi yang lebih baru.
Ketika menggunakan Jejak, Debug, dan TraceSource, Anda harus memiliki mekanisme untuk mengumpulkan dan merekam pesan yang dikirimkan. Pesan jejak diterima oleh pendengar. Pendengar bertujuan mengumpulkan, menyimpan, dan merutekan pesan pelacakan. Pendengar mengarahkan output penelusuran ke target yang sesuai, seperti file log, jendela, atau teks.
Pendengar tersedia untuk kelas Debug, Jejak, dan TraceSource, yang masing-masing dapat mengirimkan outputnya ke berbagai objek pendengar. Berikut adalah pendengar yang telah ditentukan sebelumnya yang umum digunakan:
Mengalihkan output TextWriterTraceListener ke instans kelas TextWriter atau ke segala sesuatu yang merupakan kelas Stream. Selain itu, juga dapat menulis ke konsol atau ke file, karena ini adalah kelas Stream.
Mengalihkan output EventLogTraceListener ke log peristiwa.
Memancarkan DefaultTraceListener pesan Tulis dan WriteLine ke OutputDebugString dan ke metode Debugger.Log. Dalam Visual Studio, ini menyebabkan pesan penelusuran kesalahan muncul di jendela Output. Pesan Assert yang Gagal dan akan gagal juga memancarkan API Windows OutputDebugString dan metode Debugger.Log, dan juga menyebabkan kotak pesan ditampilkan. Perilaku ini adalah perilaku default untuk pesan Debug dan Jejak, karena DefaultTraceListener secara otomatis disertakan dalam setiap koleksi
Listeners
dan merupakan satu-satunya pendengar yang disertakan secara otomatis.Mengarahkan ConsoleTraceListener output penelusuran atau penelusuran kesalahan ke output standar atau aliran kesalahan standar.
Mengarahkan DelimitedListTraceListener output penelusuran atau penelusuran kesalahan ke penulis teks, seperti penulis aliran, atau ke aliran, seperti aliran file. Output jejak dalam format teks dibatasi yang menggunakan pemisah yang ditentukan melalui properti Delimiter.
Mengarahkan XmlWriterTraceListener output penelusuran atau penelusuran kesalahan sebagai data yang dikodekan XML ke TextWriter atau ke Stream, seperti FileStream.
Jika Anda ingin pendengar selain DefaultTraceListener menerima Debug, Jejak , dan output TraceSource, Anda harus menambahkannya ke kumpulan Listeners
. Untuk mendapatkan informasi selengkapnya, lihat Cara: Membuat dan Menginisialisasi Pendengar Jejak dan Cara: Menggunakan TraceSource dan Filter dengan Pendengar Jejak. Setiap pendengar dalam kumpulan Pendengar mendapatkan pesan yang sama dari metode output jejak. Contohnya, Anda menyiapkan dua pendengar: TextWriterTraceListener dan EventLogTraceListener. Setiap pendengar menerima pesan yang sama. TextWriterTraceListener akan mengarahkan outputnya ke aliran, dan EventLogTraceListener akan mengarahkan outputnya ke log peristiwa.
Contoh berikut menunjukkan cara mengirimkan output ke kumpulan Pendengar.
' Use this example when debugging.
Debug.WriteLine("Error in Widget 42")
' Use this example when tracing.
Trace.WriteLine("Error in Widget 42")
// Use this example when debugging.
System.Diagnostics.Debug.WriteLine("Error in Widget 42");
// Use this example when tracing.
System.Diagnostics.Trace.WriteLine("Error in Widget 42");
Debug dan penelusuran berbagi kumpulan Pendengar yang sama, sehingga jika Anda menambahkan objek pendengar ke kumpulan Debug.Listeners di aplikasi Anda, itu juga akan ditambahkan ke kumpulan Trace.Listeners.
Contoh berikut menunjukkan cara menggunakan pendengar untuk mengirimkan informasi penelusuran ke konsol:
Trace.Listeners.Clear()
Trace.Listeners.Add(New TextWriterTraceListener(Console.Out))
System.Diagnostics.Trace.Listeners.Clear();
System.Diagnostics.Trace.Listeners.Add(
new System.Diagnostics.TextWriterTraceListener(Console.Out));
Pendengar yang Ditentukan Pengembang
Anda dapat menentukan pendengar Anda sendiri dengan mewarisi dari kelas dasar TraceListener dan mengambil alih metodenya dengan metode yang disesuaikan. Untuk mendapatkan informasi selengkapnya tentang membuat pendengar yang ditentukan pengembang, lihat TraceListener di referensi .NET Framework.