Freigeben über


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

In dieser exemplarischen Vorgehensweise wird erläutert, wie Sie die standardmäßige Protokollfilterung für das My.Application.Log-Objekt ändern und dabei festlegen können, welche Informationen vom Log-Objekt an die Listener weitergeleitet werden und welche Informationen die Listener speichern. Sie können das Protokollierungsverhalten auch nach dem Erstellen einer Anwendung noch ändern, da die Konfigurationsinformationen in der Konfigurationsdatei der Anwendung gespeichert werden.

Erste Schritte

Alle von My.Application.Log geschriebenen Meldungen verfügen über einen zugeordneten Schweregrad, der in Filtermechanismen zur Steuerung der Protokollausgaben verwendet wird. In dieser Beispielanwendung werden My.Application.Log-Methoden zum Schreiben mehrerer Protokollmeldungen mit verschiedenen Schweregraden verwendet.

So erstellen Sie die Beispielanwendung

  1. Öffnen Sie ein neues Visual Basic-Windows-Anwendungsprojekt.

  2. Fügen Sie Form1 eine Schaltfläche mit dem Namen Button1 hinzu.

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

  4. Führen Sie die Anwendung im Debugger aus.

  5. Klicken Sie auf Button1.

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

    DefaultSource Information: 0 : In Button1_Click

    DefaultSource Error: 2 : Error in the application.

  6. Schließen Sie die Anwendung.

Informationen darüber, wie Sie das Debugausgabefenster der Anwendung anzeigen, finden Sie unter Ausgabefenster. Informationen über den Speicherort der Protokolldatei für die Anwendung finden Sie unter Exemplarische Vorgehensweise: Bestimmen, wohin "My.Application.Log" Informationen schreibt (Visual Basic).

Tipp

Standardmäßig wird die Protokolldateiausgabe beim Schließen der Anwendung gelöscht.

Im oben stehenden Beispiel werden für den zweiten Aufruf der WriteEntry-Methode und den Aufruf der WriteException-Methode Protokollausgaben erzeugt, für den ersten und den letzten Aufruf der WriteEntry-Methode jedoch nicht. Dies liegt daran, dass die Schweregrade von WriteEntry und WriteException "Information" bzw. "Error" sind. Beide sind bei der Standardprotokollfilterung des My.Application.Log-Objekts zulässig. Für Ereignisse mit den Schweregraden "Start" und "Stop" wird keine Protokollausgabe erzeugt.

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

Für das My.Application.Log-Objekt wird ein SourceSwitch mit dem Namen DefaultSwitch verwendet, um festzulegen, welche Meldungen das Objekt aus der WriteEntry-Methode und der WriteException-Methode an die Protokolllistener weiterleitet. Sie können DefaultSwitch in der Konfigurationsdatei der Anwendung konfigurieren, indem Sie dessen Wert auf einen der SourceLevels-Enumerationswerte setzen. Der Standardwert ist "Information".

In der nachfolgenden Tabelle werden die Schweregrade aufgeführt, die bei einer bestimmten Einstellung für DefaultSwitch erforderlich sind, damit Log eine Meldung an die Listener schreibt.

DefaultSwitch-Wert

Erforderlicher Schweregrad für Weiterleitung der Meldung

Critical

Critical

Error

Critical oder Error

Warning

Critical, Error oder Warning

Information

Critical, Error, Warning oder Information

Verbose

Critical, Error, Warning, Information oder Verbose

ActivityTracing

Start, Stop, Suspend, Resume oder Transfer

All

Alle Meldungen werden weitergeleitet.

Off

Alle Meldungen werden blockiert.

Tipp

Für die WriteEntry-Methode und die WriteException-Methode ist jeweils eine Überladung vorhanden, bei der kein Schweregrad angegeben wird. Der implizite Schweregrad für die WriteEntry-Überladung ist "Information", und der implizite Schweregrad für die WriteException-Überladung ist "Error".

In dieser Tabelle wird das Protokoll Ausgabe im vorherigen Beispiel gezeigt: Festlegen von DefaultSwitch mit dem Standardwert „Informationen“, wird nur der zweite Aufruf der WriteEntry-Methode und den Aufruf der WriteException-Methode erzeugnis protokollieren Ausgabe.

So protokollieren Sie ausschließlich Ereignisse aus der Aktivitätsablaufverfolgung

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

    - oder -

    Wenn keine app.config-Datei vorhanden ist:

    1. Klicken Sie im Menü Projekt auf Neues Element hinzufügen.

    2. Klicken Sie im Dialogfeld Neues Element hinzufügen auf Anwendungskonfigurationsdatei.

    3. Klicken Sie auf Hinzufügen.

  2. Suchen Sie den <switches>-Abschnitt innerhalb des <system.diagnostics>-Abschnitts, der sich wiederum im <configuration>-Abschnitt auf der obersten Ebene befindet.

  3. Suchen Sie das Element, das der Auflistung von Schaltern den Eintrag DefaultSwitch hinzufügt. Dieses Element sieht ähnlich wie das Folgende aus:

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

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

  5. Der Inhalt der Datei app.config sollte dem folgenden XML-Ausschnitt ähnlich 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. Klicken Sie auf Button1.

    Die Anwendung schreibt die folgenden Informationen in die Debugausgabe und die 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 zurück in "Information".

Tipp

Der DefaultSwitch-Schalter wirkt sich nur auf My.Application.Log aus. Das Verhalten der System.Diagnostics.Trace-Klasse und der System.Diagnostics.Debug-Klasse von .NET Framework wird dadurch nicht beeinflusst.

Filterung für einzelne My.Application.Log-Listener

Im vorhergehenden Beispiel wurde gezeigt, wie die Filterung für alle My.Application.Log-Ausgaben geändert werden kann. In diesem Beispiel wird das Anpassen der Filterung für einen einzelnen Protokolllistener erläutert. In der Standardeinstellung bestehen für eine Anwendung zwei Listener, die in die Debugausgabe und die Protokolldatei der Anwendung schreiben.

In der Konfigurationsdatei kann das Verhalten der Protokolllistener durch Angabe jeweils eines Filters festgelegt werden. Dies entspricht einem Schalter für My.Application.Log. Ein Protokolllistener gibt nur dann eine Meldung aus, wenn der Schweregrad der Meldung sowohl in Bezug auf den DefaultSwitch des Protokolls als auch in Bezug auf den Filter des betreffenden Protokolllisteners ausreichend ist.

In diesem Beispiel wird veranschaulicht, wie die Filterung für einen neuen Debuglistener konfiguriert und dieser dem Log-Objekt hinzugefügt werden kann. Der Standarddebuglistener sollte aus dem Log-Objekt entfernt werden, um sicherzustellen, dass die Debugmeldungen vom neuen Debuglistener stammen.

So protokollieren Sie ausschließlich Ereignisse aus der Aktivitätsablaufverfolgung

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

    - oder -

    Wenn keine app.config-Datei vorhanden ist:

    1. Klicken Sie im Menü Projekt auf Neues Element hinzufügen.

    2. Klicken Sie im Dialogfeld Neues Element hinzufügen auf Anwendungskonfigurationsdatei.

    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 im <source>-Abschnitt mit dem name-Attribut "DefaultSource" (innerhalb des <sources>-Abschnitts) den <listeners>-Abschnitt. Der <sources>-Abschnitt befindet sich im <system.diagnostics>-Abschnitt (innerhalb des <configuration>-Abschnitts auf der obersten Ebene).

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

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

  6. Fügen Sie diesem <sharedListeners>-Abschnitt dieses Element 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 akzeptiert als initializeData-Attribut einen der SourceLevels-Enumerationswerte.

  7. Der Inhalt der Datei app.config sollte dem folgenden XML-Ausschnitt ähnlich 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. Klicken Sie auf 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.

    Aufgrund der restriktiveren Filterung werden weniger Informationen in die Debugausgabe der Anwendung geschrieben.

    Default Error 2 Error

  10. Schließen Sie die Anwendung.

Weitere Informationen über das Ändern der Protokolleinstellungen nach der Bereitstellung finden Sie unter Arbeiten mit Anwendungsprotokollen in Visual Basic.

Siehe auch

Aufgaben

Exemplarische Vorgehensweise: Bestimmen, wohin "My.Application.Log" Informationen schreibt (Visual Basic)

Exemplarische Vorgehensweise: Ändern des Orts, in den "My.Application.Log" Informationen schreibt (Visual Basic)

Exemplarische Vorgehensweise: Erstellen von benutzerdefinierten Protokolllistenern (Visual Basic)

Gewusst wie: Schreiben von Protokollmeldungen (Visual Basic)

Konzepte

Ablaufverfolgungsschalter

Protokollieren von Informationen aus der Anwendung (Visual Basic)