Bagikan melalui


Panduan: Memfilter Output My.Application.Log (Visual Basic)

Panduan ini menunjukkan cara mengubah pemfilteran log default untuk objek My.Application.Log, untuk mengontrol informasi apa yang diteruskan dari objek Log ke pendengar dan informasi apa yang ditulis oleh pendengar. Anda dapat mengubah perilaku pengelogan bahkan setelah membangun aplikasi, karena informasi konfigurasi disimpan dalam file konfigurasi pada aplikasi tersebut.

Memulai

Setiap pesan yang ditulis My.Application.Log memiliki tingkat keparahan terkait, yang digunakan mekanisme pemfilteran untuk mengontrol output log. Aplikasi sampel ini menggunakan metode My.Application.Log untuk menulis beberapa pesan log dengan tingkat keparahan yang berbeda.

Untuk membangun aplikasi sampel

  1. Buka proyek Aplikasi Windows Visual Basic baru.

  2. Tambahkan tombol bernama Tombol1 ke Form1.

  3. Dalam handler peristiwa Click untuk Tombol1, tambahkan kode berikut:

    ' Activity tracing information
    My.Application.Log.WriteEntry("Entering Button1_Click", TraceEventType.Start)
    
    ' Tracing information
    My.Application.Log.WriteEntry("In Button1_Click", TraceEventType.Information)
    
    ' Create an exception to log.
    Dim ex As New ApplicationException
    ' Exception information
    My.Application.Log.WriteException(ex)
    
    ' Activity tracing information
    My.Application.Log.WriteEntry("Leaving Button1_Click", TraceEventType.Stop)
    
  4. Jalankan aplikasi di debugger.

  5. Tekan Tombol1.

    Aplikasi menulis informasi berikut ke output debug aplikasi dan file log.

    DefaultSource Information: 0 : In Button1_Click

    DefaultSource Error: 2 : Error in the application.

  6. Tutup aplikasi.

    Untuk informasi tentang cara melihat jendela output debug aplikasi, lihat Jendela Output. Untuk informasi tentang lokasi file log aplikasi, lihat Panduan: Menentukan Tempat My.Application.Log Menulis Informasi.

    Catatan

    Secara default, aplikasi membersihkan output file log saat aplikasi ditutup.

    Dalam contoh di atas, panggilan kedua ke metode WriteEntry dan panggilan ke metode WriteException menghasilkan output log, sementara panggilan pertama dan terakhir ke metode WriteEntry tidak menghasilkan log output. Ini karena tingkat keparahan WriteEntry dan WriteException adalah "Informasi" dan "Kesalahan", yang keduanya diizinkan oleh My.Application.Log pemfilteran log default dari objek tersebut. Namun, peristiwa dengan tingkat keparahan "Mulai" dan "Hentikan" dicegah agar tidak menghasilkan output log.

Pemfilteran untuk Semua Pendengar My.Application.Log

Objek My.Application.Log menggunakan suatu SourceSwitch bernama DefaultSwitch untuk mengontrol pesan mana yang diteruskannya dari metode WriteEntry dan WriteException ke pendengar log. Anda dapat mengonfigurasi DefaultSwitch dalam file konfigurasi aplikasi dengan mengatur nilainya ke salah satu nilai enumerasi SourceLevels. Secara default, nilainya adalah "Informasi".

Tabel ini memperlihatkan tingkat keparahan yang diperlukan agar Log menulis pesan ke pendengar, menimbang pengaturan DefaultSwitch tertentu.

Nilai DefaultSwitch Tingkat keparahan pesan yang diperlukan untuk output
Critical Critical
Error Critical atau Error
Warning Critical, Error, atau Warning
Information Critical, Error, Warning, atau Information
Verbose Critical, Error, Warning, Information, atau Verbose
ActivityTracing Start, Stop, Suspend, Resume, atau Transfer
All Semua pesan diperbolehkan.
Off Semua pesan diblokir.

Catatan

Metode WriteEntry dan WriteException masing-masing memiliki kelebihan beban yang tidak menentukan tingkat keparahan. Tingkat keparahan implisit untuk kelebihan beban WriteEntry adalah "Informasi", dan tingkat keparahan implisit untuk kelebihan beban WriteException adalah "Kesalahan".

Tabel ini menjelaskan output log yang ditampilkan dalam contoh sebelumnya: dengan pengaturan DefaultSwitch default dari "Informasi", hanya panggilan kedua ke metode WriteEntry dan panggilan ke metode WriteException menghasilkan output log.

Untuk mencatat peristiwa pelacakan aktivitas saja

  1. Klik kanan app.config di Penjelajah Solusi dan pilih Buka.

    -atau-

    Jika tidak ada file app.config:

    1. Pada menu Proyek, klik Tambahkan Item Baru.

    2. Dari kotak dialog Tambahkan Item Baru, pilih File Konfigurasi Aplikasi.

    3. Klik Tambahkan.

  2. Temukan bagian <switches>, yang ada di bagian <system.diagnostics>, yang berada di bagian <configuration> tingkat -atas.

  3. Temukan elemen menambahkan DefaultSwitch ke kumpulan sakelar. Ini akan terlihat mirip dengan elemen ini:

    <add name="DefaultSwitch" value="Information" />

  4. Ubah nilai atribut value menjadi "ActivityTracing".

  5. Konten file app.config harus mirip dengan XML berikut:

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <system.diagnostics>
        <sources>
          <!-- This section configures My.Application.Log -->
          <source name="DefaultSource" switchName="DefaultSwitch">
            <listeners>
              <add name="FileLog"/>
            </listeners>
          </source>
        </sources>
        <switches>
          <add name="DefaultSwitch" value="ActivityTracing" />
        </switches>
        <sharedListeners>
          <add name="FileLog"
               type="Microsoft.VisualBasic.Logging.FileLogTraceListener,
                     Microsoft.VisualBasic, Version=8.0.0.0,
                     Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a,
                     processorArchitecture=MSIL"
               initializeData="FileLogWriter"/>
        </sharedListeners>
      </system.diagnostics>
    </configuration>
    
  6. Jalankan aplikasi di debugger.

  7. Tekan Tombol1.

    Aplikasi menulis informasi berikut ke output debug aplikasi dan file log:

    DefaultSource Start: 4 : Entering Button1_Click

    DefaultSource Stop: 5 : Leaving Button1_Click

  8. Tutup aplikasi.

  9. Ubah nilai atribut value kembali ke "Informasi".

    Catatan

    Pengaturan pengalihan DefaultSwitch hanya mengontrol My.Application.Log. Ini tidak mengubah perilaku kelas System.Diagnostics.Trace dan System.Diagnostics.Debug .NET.

Pemfilteran Individual untuk Pendengar My.Application.Log

Contoh sebelumnya menunjukkan cara mengubah pemfilteran untuk semua output My.Application.Log. Contoh ini menunjukkan cara memfilter pendengar log individual. Secara default, aplikasi memiliki dua listener yang menulis ke output debug aplikasi dan file log.

File konfigurasi mengontrol perilaku pendengar log dengan memungkinkan masing-masing pendengar memiliki filter, yang mirip dengan sakelar untuk My.Application.Log. Pendengar log akan menghasilkan pesan hanya jika tingkat keparahan pesan diizinkan oleh filter DefaultSwitch log dan pendengar log.

Contoh ini menunjukkan cara mengonfigurasi pemfilteran untuk pendengar debug baru dan menambahkannya ke objek Log. Pendengar debug default harus dihapus dari objek Log, sehingga jelas bahwa pesan debug berasal dari pendengar debug baru.

Untuk mencatat peristiwa pelacakan aktivitas saja

  1. Klik kanan app.config di Penjelajah Solusi dan pilih Buka.

    -atau-

    Jika tidak ada file app.config:

    1. Pada menu Proyek, klik Tambahkan Item Baru.

    2. Dari kotak dialog Tambahkan Item Baru, pilih File Konfigurasi Aplikasi.

    3. Klik Tambahkan.

  2. Klik kanan app.config di Penjelajah Solusi. Pilih Buka.

  3. Temukan bagian <listeners>, di bagian <source> dengan "DefaultSource" atribut name, yang terletak di bagian <sources>. Bagian <sources> berada di bawah bagian <system.diagnostics>, di bagian <configuration> tingkat-atas.

  4. Tambahkan elemen ini ke bagian <listeners>:

    <!-- Remove the default debug listener. -->
    <remove name="Default"/>
    <!-- Add a filterable debug listener. -->
    <add name="NewDefault"/>
    
  5. Temukan bagian <sharedListeners>, di bagian <system.diagnostics>, di bagian tingkat <configuration> atas.

  6. Tambahkan elemen ini ke bagian <sharedListeners>:

    <add name="NewDefault"
         type="System.Diagnostics.DefaultTraceListener,
               System, Version=2.0.0.0, Culture=neutral,
               PublicKeyToken=b77a5c561934e089,
               processorArchitecture=MSIL">
        <filter type="System.Diagnostics.EventTypeFilter"
                initializeData="Error" />
    </add>
    

    Filter EventTypeFilter mengambil salah satu nilai enumerasi SourceLevels sebagai atribut initializeData.

  7. Konten file app.config harus mirip dengan XML berikut:

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <system.diagnostics>
        <sources>
          <!-- This section configures My.Application.Log -->
          <source name="DefaultSource" switchName="DefaultSwitch">
            <listeners>
              <add name="FileLog"/>
              <!-- Remove the default debug listener. -->
              <remove name="Default"/>
              <!-- Add a filterable debug listener. -->
              <add name="NewDefault"/>
            </listeners>
          </source>
        </sources>
        <switches>
          <add name="DefaultSwitch" value="Information" />
        </switches>
        <sharedListeners>
          <add name="FileLog"
               type="Microsoft.VisualBasic.Logging.FileLogTraceListener,
                     Microsoft.VisualBasic, Version=8.0.0.0,
                     Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a,
                     processorArchitecture=MSIL"
               initializeData="FileLogWriter"/>
          <add name="NewDefault"
               type="System.Diagnostics.DefaultTraceListener,
                     System, Version=2.0.0.0, Culture=neutral,
                     PublicKeyToken=b77a5c561934e089,
                     processorArchitecture=MSIL">
            <filter type="System.Diagnostics.EventTypeFilter"
                    initializeData="Error" />
          </add>
        </sharedListeners>
      </system.diagnostics>
    </configuration>
    
  8. Jalankan aplikasi di debugger.

  9. Tekan Tombol1.

    Aplikasi menulis informasi berikut ke file log aplikasi:

    Default Information: 0 : In Button1_Click

    Default Error: 2 : Error in the application.

    Aplikasi menulis lebih sedikit informasi ke output debug aplikasi karena pemfilteran yang lebih ketat.

    Default Error 2 Error

  10. Tutup aplikasi.

Untuk informasi selengkapnya tentang mengubah pengaturan log setelah penyebaran, lihat Bekerja dengan Log Aplikasi.

Lihat juga