Aracılığıyla paylaş


İzlenecek yol: My.Application.Log Çıktısını Filtreleme (Visual Basic)

Bu kılavuzda, My.Application.Log nesnesi için varsayılan günlük filtrelemesinin nasıl değiştirileceği, Log nesnesinden dinleyicilere hangi bilgilerin geçirileceği ve dinleyiciler tarafından hangi bilgilerin yazılmasının denetleneceği gösterilmektedir. Yapılandırma bilgileri uygulamanın ayar dosyasında saklandığı için, uygulamayı geliştirdikten sonra bile günlük kaydı davranışını değiştirebilirsiniz.

Başlangıç Yapmak

Her bir My.Application.Log mesajının, filtreleme mekanizmalarının log çıktısını kontrol etmek için kullandığı bir ciddiyet seviyesi vardır. Bu örnek uygulama, My.Application.Log yöntemlerini kullanarak farklı önem derecelerine sahip birkaç günlük iletisi yazar.

Örnek uygulamayı oluşturmak için

  1. Yeni bir Visual Basic Windows Uygulaması projesi açın.

  2. Form1'e Button1 adlı bir düğme ekleyin.

  3. Button1 için olay işleyicisine Click aşağıdaki kodu ekleyin:

    ' 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. Uygulamayı hata ayıklayıcıda çalıştırın.

  5. Düğme1'e basın.

    Uygulama, uygulamanın hata ayıklama çıkışına ve günlük dosyasına aşağıdaki bilgileri yazar.

    DefaultSource Information: 0 : In Button1_Click

    DefaultSource Error: 2 : Error in the application.

  6. Uygulamayı kapatın.

    Uygulamanın hata ayıklama çıkış penceresini görüntüleme hakkında bilgi için bkz. Çıkış Penceresi. Uygulamanın günlük dosyasının konumu hakkında bilgi için bkz. İzlenecek Yol: My.Application.Log'un Bilgileri Nereye Yazacağı Belirleniyor.

    Uyarı

    Varsayılan olarak, uygulama kapatıldığında günlük dosyası çıkışını temizler.

    Yukarıdaki örnekte, yöntemine WriteEntry yapılan ikinci çağrı ve yöntemine yapılan WriteException çağrı günlük çıkışı oluştururken, yönteme WriteEntry yapılan ilk ve son çağrılar üretmez. Bunun nedeni, WriteEntry ve WriteException nesnelerinin önem düzeylerinin "Bilgi" ve "Hata" olmasıdır ve her ikisine de My.Application.Log nesnesinin varsayılan günlük filtrelemesi izin verir. Ancak, "Başlat" ve "Durdur" önem düzeyleri olan olayların log çıktısı oluşturması engellenir.

Tüm My.Application.Log Dinleyicileri için Filtreleme

My.Application.Log nesnesi, SourceSwitch ve DefaultSwitch yöntemlerinden günlük dinleyicilerine hangi iletileri geçireceğini denetlemek için WriteEntry adlı bir WriteException kullanır. Uygulamanın yapılandırma dosyasında DefaultSwitch'yi numaralandırma değerlerinden birine SourceLevels ayarlayarak yapılandırabilirsiniz. Varsayılan olarak değeri "Information" olur.

Bu tablo, belirli bir DefaultSwitch ayarı verildiğinde Log'un dinleyicilere mesaj yazması için gereken ciddiyet düzeyini gösterir.

DefaultSwitch Değeri Çıktı için ileti önem derecesi gereklidir
Critical Critical
Error Critical veya Error
Warning Critical, Error veya Warning
Information Critical, Error, Warningveya Information
Verbose Critical, Error, Warning, Informationveya Verbose
ActivityTracing Start, Stop, Suspend, Resumeveya Transfer
All Tüm iletilere izin verilir.
Off Tüm iletiler engellenir.

Uyarı

WriteEntry ve WriteException yöntemlerinin her birinin önem düzeyi belirtmeyen bir aşırı yüklemesi vardır. Aşırı yüklemenin WriteEntry örtük önem düzeyi "Bilgi" ve aşırı yüklemenin örtük önem düzeyi WriteException "Hata"dır.

Bu tablo, önceki örnekte gösterilen günlük çıktısını açıklar: varsayılan DefaultSwitch "Bilgi" ayarındayken, yalnızca WriteEntry yöntemine yapılan ikinci çağrı ile WriteException yöntemine yapılan çağrı günlük çıktısı üretir.

Yalnızca etkinlik izleme olaylarını günlüğe kaydetmek için

  1. Çözüm Gezgini'nde app.config sağ tıklayın ve Aç'ı seçin.

    -veya-

    app.config dosyası yoksa:

    1. Proje menüsünde Yeni Öğe Ekle'yi seçin.

    2. Yeni Öğe Ekle iletişim kutusunda Uygulama Yapılandırma Dosyası'nı seçin.

    3. Ekle'yi tıklatın.

  2. En üst düzey <switches> bölümde yer alan <system.diagnostics> bölümünün içindeki <configuration> bölümünü bulun.

  3. Anahtar koleksiyonuna DefaultSwitch ekleyen öğeyi bulun. Bu öğeye benzer görünmelidir:

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

  4. özniteliğinin value değerini "ActivityTracing" olarak değiştirin.

  5. app.config dosyasının içeriği aşağıdaki XML'ye benzer olmalıdır:

    <?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. Uygulamayı hata ayıklayıcıda çalıştırın.

  7. Düğme1'e basın.

    Uygulama, uygulamanın hata ayıklama çıkışına ve günlük dosyasına aşağıdaki bilgileri yazar:

    DefaultSource Start: 4 : Entering Button1_Click

    DefaultSource Stop: 5 : Leaving Button1_Click

  8. Uygulamayı kapatın.

  9. Özniteliğin value değerini "Bilgi" olarak değiştirin.

    Uyarı

    Anahtar DefaultSwitch ayarı yalnızca My.Application.Logöğesini denetler. .NET System.Diagnostics.Trace ve System.Diagnostics.Debug sınıfların davranışını değiştirmez.

My.Application.Log Dinleyicileri için Tek Tek Filtreleme

Önceki örnekte, tüm My.Application.Log çıkışlar için filtrelemenin nasıl değiştirileceği gösterilmektedir. Bu örnek, tek bir günlük dinleyicisinin nasıl filtreleneceğini göstermektedir. Varsayılan olarak, bir uygulamanın hata ayıklama çıkışına ve günlük dosyasına yazan iki dinleyicisi vardır.

Yapılandırma dosyası, her bir günlük dinleyicisinin bir filtreye sahip olmasına olanak tanıyarak davranışını denetler; bu filtre, bir anahtar gibi çalışır My.Application.Log içinde. Bir günlük dinleyicisi, yalnızca iletinin önem derecesi hem günlüğün DefaultSwitch hem de günlük dinleyicisinin filtresi tarafından izin verildiğinde bir ileti çıkışı oluşturur.

Bu örnekte, yeni bir hata ayıklama dinleyicisi için filtrelemenin nasıl yapılandırılıp nesneye nasıl ekleneceği gösterilmektedir Log . Varsayılan hata ayıklama dinleyicisi nesneden Log kaldırılmalıdır, bu nedenle hata ayıklama iletilerinin yeni hata ayıklama dinleyicisinden geldiği açıktır.

Yalnızca etkinlik izleme olaylarını günlüğe kaydetmek için

  1. Çözüm Gezgini'nde app.config sağ tıklayın ve Aç'ı seçin.

    -veya-

    app.config dosyası yoksa:

    1. Proje menüsünde Yeni Öğe Ekle'yi seçin.

    2. Yeni Öğe Ekle iletişim kutusunda Uygulama Yapılandırma Dosyası'nı seçin.

    3. Ekle'yi tıklatın.

  2. Çözüm Gezgini'nde app.config sağ tıklayın. Aç'ı seçin.

  3. <listeners> bölümünün altında yer alan, "DefaultSource" özniteliğine sahip <source> bölümünü, name bölümündeki <sources> bölümünde bulun. <sources> bölümü, en üst düzey <system.diagnostics> bölümdeki <configuration> bölümünün altındadır.

  4. Bu öğeyi <listeners> bölümüne ekleyin:

    <!-- Remove the default debug listener. -->
    <remove name="Default"/>
    <!-- Add a filterable debug listener. -->
    <add name="NewDefault"/>
    
  5. <sharedListeners> En üst düzey <system.diagnostics> bölümdeki <configuration> bölümünü bulun.

  6. Bu öğeyi bu <sharedListeners> bölüme ekleyin:

    <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>
    

    EventTypeFilter filtresi, SourceLevels sabit değerlerinden birini initializeData öznitelik olarak alır.

  7. app.config dosyasının içeriği aşağıdaki XML'ye benzer olmalıdır:

    <?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. Uygulamayı hata ayıklayıcıda çalıştırın.

  9. Düğme1'e basın.

    Uygulama, uygulamanın günlük dosyasına aşağıdaki bilgileri yazar:

    Default Information: 0 : In Button1_Click

    Default Error: 2 : Error in the application.

    Uygulama, daha kısıtlayıcı filtreleme nedeniyle uygulamanın hata ayıklama çıkışına daha az bilgi yazar.

    Default Error 2 Error

  10. Uygulamayı kapatın.

Dağıtımdan sonra günlük ayarlarını değiştirme hakkında daha fazla bilgi için bkz. Uygulama Günlükleriyle Çalışma.

Ayrıca bakınız