Udostępnij za pomocą


Przewodnik: filtrowanie danych wyjściowych My.Application.Log (Visual Basic)

W tym przewodniku pokazano, jak zmienić domyślne filtrowanie dziennika dla My.Application.Log obiektu, aby kontrolować, jakie informacje są przekazywane z Log obiektu do odbiorników i jakie informacje są zapisywane przez odbiorniki. Zachowanie rejestrowania można zmienić nawet po utworzeniu aplikacji, ponieważ informacje o konfiguracji są przechowywane w pliku konfiguracji aplikacji.

Wprowadzenie

Każdy komunikat, który zapisuje My.Application.Log, ma przypisany poziom ważności, który mechanizmy filtrowania wykorzystują w celu kontrolowania wyniku dziennika. Ta przykładowa aplikacja używa My.Application.Log metod do zapisywania kilku komunikatów dziennika o różnych poziomach ważności.

Aby skompilować przykładową aplikację

  1. Otwórz nowy projekt aplikacji systemu Windows w języku Visual Basic.

  2. Dodaj przycisk o nazwie Button1 do formularza Form1.

  3. W procedurze obsługi zdarzeń Click dla przycisku Button1 dodaj następujący kod:

    ' 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. Uruchom aplikację w debugerze.

  5. Naciśnij przycisk1.

    Aplikacja zapisuje następujące informacje w pliku wyjściowym debugowania i pliku dziennika aplikacji.

    DefaultSource Information: 0 : In Button1_Click

    DefaultSource Error: 2 : Error in the application.

  6. Zamknij aplikację.

    Aby uzyskać informacje na temat wyświetlania okna danych wyjściowych debugowania aplikacji, zobacz Okno danych wyjściowych. Aby uzyskać informacje na temat lokalizacji pliku dziennika aplikacji, zobacz Przewodnik: określanie miejsca zapisywania informacji o pliku My.Application.Log.

    Uwaga / Notatka

    Domyślnie aplikacja opróżnia dane wyjściowe pliku dziennika po zamknięciu aplikacji.

    W powyższym przykładzie drugie wywołanie metody WriteEntry i wywołanie metody WriteException generują dane wyjściowe dziennika, podczas gdy pierwsze i ostatnie wywołania metody WriteEntry nie. Jest to spowodowane poziomami ważności WriteEntry i WriteException, które są „Informacje” i „Błąd”, z których oba są dopuszczalne przez domyślne filtrowanie dziennika obiektu My.Application.Log. Jednak zdarzenia z poziomami ważności "Start" i "Stop" nie mogą tworzyć danych wyjściowych dziennika.

Filtrowanie dla wszystkich nasłuchujących My.Application.Log

Obiekt My.Application.Log używa SourceSwitch o nazwie DefaultSwitch do kontrolowania, które komunikaty są przekazywane z metod WriteEntry i WriteException do odbiorników dziennika. Możesz skonfigurować DefaultSwitch w pliku konfiguracji aplikacji, ustawiając jej wartość na jedną z SourceLevels wartości wyliczenia. Domyślnie jej wartość to "Informacje".

W tej tabeli przedstawiono poziom ważności wymagany dla Log, aby zapisać wiadomość do odbiorników, biorąc pod uwagę określone DefaultSwitch ustawienie.

Wartość przełącznika domyślnego Ważność komunikatu wymagana dla danych wyjściowych
Critical Critical
Error Critical lub Error
Warning Critical, Error lub Warning
Information Critical, Error, Warninglub Information
Verbose Critical, Error, Warning, Informationlub Verbose
ActivityTracing Start, Stop, Suspend, Resumelub Transfer
All Wszystkie komunikaty są dozwolone.
Off Wszystkie komunikaty są blokowane.

Uwaga / Notatka

Metody WriteEntry i WriteException mają przeciążenie, które nie określa poziomu ważności. Niejawny poziom WriteEntry ważności przeciążenia to "Informacje", a niejawny poziom WriteException ważności przeciążenia to "Błąd".

W tej tabeli objaśnia się wyjście dziennika pokazane w poprzednim przykładzie: z domyślnym DefaultSwitch ustawieniem "Information" tylko drugie wywołanie metody WriteEntry i wywołanie metody WriteException generują wyjście dziennika.

Aby rejestrować tylko zdarzenia śledzenia aktywności

  1. Kliknij prawym przyciskiem myszy app.config w Eksploratorze rozwiązań i wybierz polecenie Otwórz.

    — lub —

    Jeśli nie ma pliku app.config:

    1. W menu Project (Projekt ) wybierz pozycję Add New Item (Dodaj nowy element).

    2. W oknie dialogowym Dodawanie nowego elementu wybierz pozycję Plik konfiguracji aplikacji.

    3. Kliknij przycisk Dodaj.

  2. Znajdź sekcję <switches>, która znajduje się w sekcji <system.diagnostics>, która znajduje się w sekcji najwyższego poziomu <configuration>.

  3. Znajdź element, który dodaje DefaultSwitch do kolekcji przełączników. Powinien wyglądać podobnie do tego elementu:

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

  4. Zmień wartość atrybutu value na "ActivityTracing".

  5. Zawartość pliku app.config powinna być podobna do następującego kodu XML:

    <?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. Uruchom aplikację w debugerze.

  7. Naciśnij przycisk1.

    Aplikacja zapisuje następujące informacje w pliku danych wyjściowych i dziennika debugowania aplikacji:

    DefaultSource Start: 4 : Entering Button1_Click

    DefaultSource Stop: 5 : Leaving Button1_Click

  8. Zamknij aplikację.

  9. Zmień wartość atrybutu value z powrotem na "Informacje".

    Uwaga / Notatka

    Ustawienie przełącznika DefaultSwitch kontroluje tylko My.Application.Log. Nie zmienia zachowania klas .NET System.Diagnostics.Trace i System.Diagnostics.Debug.

Filtrowanie indywidualne dla odbiorników My.Application.Log

W poprzednim przykładzie pokazano, jak zmienić filtrowanie dla wszystkich My.Application.Log danych wyjściowych. W tym przykładzie pokazano, jak filtrować pojedynczego słuchacza dziennika. Domyślnie aplikacja ma dwa odbiorniki zapisujące dane wyjściowe debugowania aplikacji i plik dziennika.

Plik konfiguracji kontroluje zachowanie słuchaczy logów, pozwalając każdemu z nich mieć filtr, który działa podobnie do przełącznika dla My.Application.Log. Słuchacz logów wyświetli komunikat tylko wtedy, gdy stopień ważności komunikatu jest dozwolony zarówno przez filtr logów DefaultSwitch, jak i filtr słuchacza logów.

W tym przykładzie pokazano, jak skonfigurować filtrowanie dla nowego odbiornika debugowania i dodać go do Log obiektu. Domyślny odbiornik debugowania powinien zostać usunięty z Log obiektu, dlatego jest jasne, że komunikaty debugowania pochodzą z nowego odbiornika debugowania.

Aby rejestrować tylko zdarzenia śledzenia aktywności

  1. Kliknij prawym przyciskiem myszy app.config w Eksploratorze rozwiązań i wybierz polecenie Otwórz.

    — lub —

    Jeśli nie ma pliku app.config:

    1. W menu Project (Projekt ) wybierz pozycję Add New Item (Dodaj nowy element).

    2. W oknie dialogowym Dodawanie nowego elementu wybierz pozycję Plik konfiguracji aplikacji.

    3. Kliknij przycisk Dodaj.

  2. Kliknij prawym przyciskiem myszy app.config w Eksploratorze rozwiązań. Wybierz pozycję Otwórz.

  3. Znajdź sekcję <listeners> w <source> sekcji z atrybutem name "DefaultSource", który znajduje się w <sources> sekcji . Sekcja <sources> znajduje się pod sekcją <system.diagnostics> w sekcji najwyższego poziomu <configuration>.

  4. Dodaj ten element do <listeners> sekcji:

    <!-- Remove the default debug listener. -->
    <remove name="Default"/>
    <!-- Add a filterable debug listener. -->
    <add name="NewDefault"/>
    
  5. Zlokalizuj sekcję <sharedListeners> w sekcji <system.diagnostics> w sekcji najwyższego poziomu <configuration>.

  6. Dodaj ten element do tej <sharedListeners> sekcji:

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

    Filtr EventTypeFilter przyjmuje jedną z SourceLevels wartości wyliczenia jako initializeData atrybut.

  7. Zawartość pliku app.config powinna być podobna do następującego kodu XML:

    <?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. Uruchom aplikację w debugerze.

  9. Naciśnij przycisk1.

    Aplikacja zapisuje następujące informacje w pliku dziennika aplikacji:

    Default Information: 0 : In Button1_Click

    Default Error: 2 : Error in the application.

    Aplikacja zapisuje mniej informacji do wyników debugowania z powodu bardziej restrykcyjnych filtrów.

    Default Error 2 Error

  10. Zamknij aplikację.

Aby uzyskać więcej informacji na temat zmieniania ustawień dziennika po wdrożeniu, zobacz Praca z dziennikami aplikacji.

Zobacz także