Freigeben über


Exemplarische Vorgehensweise: Filterung der Ausgaben von "My.Application.Log" (Visual Basic)

In dieser exemplarischen Vorgehensweise wird veranschaulicht, wie Sie die Standardprotokollfilterung für das My.Application.Log Objekt ändern, um zu steuern, welche Informationen vom Log Objekt an die Listener übergeben werden und welche Informationen von den Listenern geschrieben werden. Sie können das Protokollierungsverhalten auch nach dem Erstellen der Anwendung ändern, da die Konfigurationsinformationen in der Konfigurationsdatei der Anwendung gespeichert werden.

Erste Schritte

Jede Nachricht, die My.Application.Log schreibt, hat einen zugeordneten Schweregrad, den Filtermechanismen zum Steuern der Protokollausgabe verwenden. Diese Beispielanwendung verwendet My.Application.Log Methoden, um mehrere Protokollnachrichten mit unterschiedlichen Schweregraden zu schreiben.

So erstellen Sie die Beispielanwendung

  1. Öffnen Sie ein neues Visual Basic Windows Application-Projekt.

  2. Hinzufügen einer Schaltfläche mit dem Namen "Button1" zu "Form1".

  3. Fügen Sie im Click Ereignishandler für Button1 den folgenden Code hinzu:

    ' 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. Führen Sie die Anwendung im Debugger aus.

  5. Drücken Sie Button1.

    Die Anwendung schreibt die folgenden Informationen in die Debugausgabe und Protokolldatei der Anwendung.

    DefaultSource Information: 0 : In Button1_Click

    DefaultSource Error: 2 : Error in the application.

  6. Schließen Sie die Anwendung.

    Informationen zum Anzeigen des Debugausgabefensters der Anwendung finden Sie unter "Ausgabefenster". Informationen zum Speicherort der Protokolldatei der Anwendung finden Sie unter Walkthrough: Determining Where My.Application.Log Writes Information.

    Hinweis

    Standardmäßig löscht die Anwendung die Protokolldateiausgabe, wenn die Anwendung geschlossen wird.

    Im obigen Beispiel erzeugt der zweite Aufruf der WriteEntry Methode und der Aufruf der WriteException Methode Protokollausgabe, während die ersten und letzten Aufrufe der WriteEntry Methode nicht. Dies liegt daran, dass die Schweregrade von WriteEntry und WriteException "Information" und "Fehler" sind, wobei beide durch die Standardprotokollfilterung des My.Application.Log-Objekts zulässig sind. Ereignisse mit den Schweregraden "Start" und "Stop" werden jedoch daran gehindert, die Protokollausgabe zu erzeugen.

Filterung für alle My.Application.Log-Abonnenten

Das My.Application.Log-Objekt verwendet einen SourceSwitch namens DefaultSwitch, um zu steuern, welche Nachrichten von den WriteEntry- und WriteException-Methoden an die Protokolllistener übergeben werden. Sie können DefaultSwitch in der Konfigurationsdatei der Anwendung konfigurieren, indem Sie den Wert auf einen der SourceLevels Aufzählungswerte festlegen. Standardmäßig lautet der Wert "Information".

Diese Tabelle zeigt das Schweregradniveau, das erforderlich ist, damit Log eine Nachricht an die Empfänger schreibt, vorausgesetzt, es ist eine bestimmte DefaultSwitch-Einstellung gegeben.

DefaultSwitch-Wert Für die Ausgabe benötigter Schweregrad der Nachrichten
Critical Critical
Error Critical oder Error
Warning Critical, Erroroder Warning
Information Critical, Error, Warning oder Information
Verbose Critical, Error, Warning, Informationoder Verbose
ActivityTracing Start, Stop, Suspend, Resumeoder Transfer
All Alle Nachrichten sind zulässig.
Off Alle Nachrichten werden blockiert.

Hinweis

Die WriteEntry- und WriteException-Methoden haben jeweils eine Überladung, die keinen Schweregrad angibt. Der implizite Schweregrad für die WriteEntry Überladung lautet "Information", und der implizite Schweregrad für die WriteException Überladung lautet "Error".

In dieser Tabelle wird die im vorherigen Beispiel gezeigte Protokollausgabe erläutert: Mit der Standardeinstellung DefaultSwitch "Information" wird nur der zweite Aufruf der WriteEntry Methode und der Aufruf der WriteException Methode protokolliert.

Um nur Ereignisse der Aktivitätsverfolgung zu protokollieren

  1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf app.config, und wählen Sie "Öffnen" aus.

    -oder-

    Wenn keine app.config Datei vorhanden ist:

    1. Wählen Sie im Menü PROJEKT die Option Neues Element hinzufügen aus.

    2. Wählen Sie im Dialogfeld " Neues Element hinzufügen " die Option "Anwendungskonfigurationsdatei" aus.

    3. Klicken Sie auf Hinzufügen.

  2. Suchen Sie den <switches> Abschnitt, der sich im <system.diagnostics> Abschnitt befindet, welcher sich im <configuration> Abschnitt auf oberster Ebene befindet.

  3. Finden Sie das Element, das DefaultSwitch zur Sammlung von Schaltern hinzufügt. Es sollte ähnlich wie dieses Element aussehen:

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

  4. Ändern Sie den Wert des value Attributs in "ActivityTracing".

  5. Der Inhalt der app.config Datei sollte mit dem folgenden XML-Code vergleichbar sein:

    <?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. Führen Sie die Anwendung im Debugger aus.

  7. Drücken Sie Button1.

    Die Anwendung schreibt die folgenden Informationen in die Debugausgabe und Protokolldatei der Anwendung:

    DefaultSource Start: 4 : Entering Button1_Click

    DefaultSource Stop: 5 : Leaving Button1_Click

  8. Schließen Sie die Anwendung.

  9. Ändern Sie den Wert des value Attributs wieder in "Information".

    Hinweis

    Die Einstellung des Schalters DefaultSwitch steuert nur My.Application.Log. Es ändert sich nicht, wie sich .NET System.Diagnostics.Trace und System.Diagnostics.Debug Klassen verhalten.

Einzelne Filterung für alle „My.Application.Log“-Listener

Im vorherigen Beispiel wird gezeigt, wie Sie die Filterung für alle My.Application.Log Ausgaben ändern. In diesem Beispiel wird veranschaulicht, wie ein einzelner Protokolllistener gefiltert wird. Standardmäßig verfügt eine Anwendung über zwei Listener, die in die Debugausgabe der Anwendung und die Protokolldatei schreiben.

Die Konfigurationsdatei steuert das Verhalten der Protokolllistener, indem jedem ein Filter zugewiesen werden kann, der einem Schalter für My.Application.Log ähnelt. Ein Protokolllistener gibt eine Nachricht nur aus, wenn der Schweregrad der Nachricht sowohl vom Protokoll DefaultSwitch - als auch vom Filter des Protokolllisteners zulässig ist.

In diesem Beispiel wird veranschaulicht, wie Sie die Filterung für einen neuen Debuglistener konfigurieren und dem Log Objekt hinzufügen. Der standardmäßige Debuglistener sollte aus dem Log Objekt entfernt werden, sodass klar ist, dass die Debugmeldungen aus dem neuen Debuglistener stammen.

So protokollieren Sie nur Aktivitätsablaufverfolgungs-Ereignisse

  1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf app.config, und wählen Sie "Öffnen" aus.

    -oder-

    Wenn keine app.config Datei vorhanden ist:

    1. Wählen Sie im Menü PROJEKT die Option Neues Element hinzufügen aus.

    2. Wählen Sie im Dialogfeld " Neues Element hinzufügen " die Option "Anwendungskonfigurationsdatei" aus.

    3. Klicken Sie auf Hinzufügen.

  2. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf „app.config“. Wählen Sie "Öffnen" aus.

  3. Suchen Sie den <listeners> Abschnitt im <source> Abschnitt mit dem name Attribut "DefaultSource", der sich unter dem <sources> Abschnitt befindet. Der <sources> Abschnitt befindet sich unter dem <system.diagnostics> Abschnitt im Abschnitt der obersten Ebene <configuration> .

  4. Fügen Sie dieses Element zum <listeners> Abschnitt hinzu:

    <!-- Remove the default debug listener. -->
    <remove name="Default"/>
    <!-- Add a filterable debug listener. -->
    <add name="NewDefault"/>
    
  5. Suchen Sie den Abschnitt <sharedListeners> im <system.diagnostics> -Abschnitt im Abschnitt <configuration> der obersten Ebene.

  6. Fügen Sie dieses Element zu diesem <sharedListeners> Abschnitt hinzu:

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

    Der EventTypeFilter Filter verwendet einen der SourceLevels Enumerationswerte als initializeData Attribut.

  7. Der Inhalt der app.config Datei sollte mit dem folgenden XML-Code vergleichbar sein:

    <?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. Führen Sie die Anwendung im Debugger aus.

  9. Drücken Sie Button1.

    Die Anwendung schreibt die folgenden Informationen in die Protokolldatei der Anwendung:

    Default Information: 0 : In Button1_Click

    Default Error: 2 : Error in the application.

    Die Anwendung schreibt aufgrund der restriktiveren Filterung weniger Informationen in die Debugausgabe der Anwendung.

    Default Error 2 Error

  10. Schließen Sie die Anwendung.

Weitere Informationen zum Ändern von Protokolleinstellungen nach der Bereitstellung finden Sie unter Arbeiten mit Anwendungsprotokollen.

Siehe auch