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

Bu kılavuzda nesne için varsayılan günlük filtrelemesinin My.Application.Log nasıl değiştirileceği, nesneden Log dinleyicilere hangi bilgilerin geçirildiğini ve dinleyiciler tarafından hangi bilgilerin yazılması denetleneceği gösterilmektedir. Yapılandırma bilgileri uygulamanın yapılandırma dosyasında depolandığından, uygulamayı derledikten sonra bile günlük davranışını değiştirebilirsiniz.

Kullanmaya Başlama

Yazan her ileti My.Application.Log , filtreleme mekanizmalarının günlük çıkışını denetlemek için kullandığı ilişkili bir önem düzeyine sahiptir. Bu örnek uygulama, farklı önem derecelerine sahip birkaç günlük iletisi yazmak için yöntemler kullanır My.Application.Log .

Örnek uygulamayı derlemek 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.

    Not

    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 ve önem düzeylerinin WriteEntry "Bilgi" ve "Hata" olmasıdır ve her ikisi de nesnenin varsayılan günlük filtrelemesi My.Application.Log tarafından izin verilir.WriteException Ancak, "Başlat" ve "Durdur" önem düzeylerine sahip olayların günlük çıkışı oluşturması engellenir.

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

nesnesi, My.Application.Log ve yöntemlerinden WriteEntry günlük dinleyicilerine hangi iletileri geçirip geçireceini denetlemek için adlı DefaultSwitch bir SourceSwitch ad kullanır.WriteException Değerini numaralandırma değerlerinden birine SourceLevels ayarlayarak uygulamanın yapılandırma dosyasında yapılandırabilirsinizDefaultSwitch. Varsayılan olarak değeri "Information" olur.

Bu tabloda, belirli DefaultSwitch bir ayara göre Günlük'in dinleyicilere ileti yazması için gereken önem düzeyi gösterilir.

DefaultSwitch Değeri Çıktı için ileti önem derecesi gerekiyor
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.

Not

ve WriteException yöntemlerinin WriteEntry 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 tabloda, önceki örnekte gösterilen günlük çıkışı açıklanmaktadır: varsayılan DefaultSwitch "Bilgi" ayarıyla, yönteme WriteEntry yapılan yalnızca ikinci çağrı ve yöntem çağrısı WriteException günlük çıktısı oluşturur.

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

  1. Çözüm Gezgini app.config öğesine 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. <switches> En üst düzey <configuration> bölümde yer alan <system.diagnostics> bölümünde yer alan bölümü bulun.

  3. Anahtar koleksiyonuna ekleyen DefaultSwitch öğ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.

    Not

    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ştireceği gösterilmektedir. Bu örnekte, tek bir günlük dinleyicisini filtreleme gösterilmektedir. 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 birinin için bir anahtara My.Application.Logbenzer bir filtreye sahip olmasına izin vererek günlük dinleyicilerinin davranışını denetler. Günlük dinleyicisi, yalnızca hem günlüğün hem de günlük DefaultSwitch dinleyicisinin filtresi tarafından iletinin önem derecesine 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 app.config öğesine 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 app.config öğesine sağ tıklayın. Aç'ı seçin.

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

  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 <configuration> bölümdeki <system.diagnostics> 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>
    

    Filtre, EventTypeFilter sabit listesi değerlerinden SourceLevels birini özniteliği olarak initializeData 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 bkz.