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

In dieser exemplarischen Vorgehensweise wird gezeigt, wie Sie das standardmäßige Filtern von Protokollen 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.This walkthrough demonstrates how to change the default log filtering for the My.Application.Log object, to control what information is passed from the Log object to the listeners and what information is written by the listeners. Sie können das Protokollierungsverhalten auch nach dem Erstellen der Anwendung ändern, da die Konfigurationsinformationen in der Konfigurationsdatei der Anwendung gespeichert sind.You can change the logging behavior even after building the application, because the configuration information is stored in the application's configuration file.

Erste SchritteGetting Started

Alle Nachrichten, die von My.Application.Log geschrieben werden, haben einen zugeordneten Schweregrad, den die Filtermechanismen verwenden, um die Protokollausgabe zu steuern.Each message that My.Application.Log writes has an associated severity level, which filtering mechanisms use to control the log output. Diese Beispielanwendung verwendet My.Application.Log-Methoden zum Schreiben mehrerer Protokollmeldungen mit unterschiedlichen Schweregraden.This sample application uses My.Application.Log methods to write several log messages with different severity levels.

So installieren Sie die BeispielanwendungTo build the sample application

  1. Öffnen Sie ein neues Visual BasicVisual Basic-Windows-Anwendungsprojekt.Open a new Visual BasicVisual Basic Windows Application project.

  2. Fügen Sie eine Schaltfläche mit dem Namen „Button1“ zu „Form1“ hinzu.Add a button named Button1 to Form1.

  3. Fügen Sie im Click-Ereignishandler den folgenden Code für „Button1“ hinzu:In the Click event handler for Button1, add the following code:

    ' 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.Run the application in the debugger.

  5. Drücken Sie Button1.Press Button1.

    Die Anwendung schreibt die folgenden Informationen in die Debugausgabe und die Protokolldatei der Anwendung.The application writes the following information to the application's debug output and log file.

    DefaultSource Information: 0 : In Button1_Click

    DefaultSource Error: 2 : Error in the application.

  6. Schließen Sie die Anwendung.Close the application.

    Informationen zum Anzeigen des Ausgabefensters der Anwendung finden Sie unter Ausgabefenster.For information on how to view the application's debug output window, see Output Window. Informationen zum Speicherort der Protokolldatei der Anwendung finden Sie unter Walkthrough: Determining Where My.Application.Log Writes Information (Exemplarische Vorgehensweise: Bestimmen, wohin „My.Application.Log“ Informationen schreibt).For information on the location of the application's log file, see Walkthrough: Determining Where My.Application.Log Writes Information.

    Hinweis

    Standardmäßig leert die Anwendung die Ausgabe der Protokolldatei, wenn die Anwendung geschlossen wird.By default, the application flushes the log-file output when the application closes.

    Im oben stehenden Beispiel erzeugt der zweite Aufruf der WriteEntry-Methode und der Aufruf der WriteException-Methode eine Protokollausgabe, während dies bei dem ersten und letzten Aufruf der WriteEntry-Methode nicht passiert.In the example above, the second call to the WriteEntry method and the call to the WriteException method produces log output, while the first and last calls to the WriteEntry method do not. Dies liegt daran, dass die Schweregrade von WriteEntry und WriteException „Information“ und „Error“ sind, die beide durch das standardmäßige Filtern von Protokollen des Objekts My.Application.Log zugelassen sind.This is because the severity levels of WriteEntry and WriteException are "Information" and "Error", both of which are allowed by the My.Application.Log object's default log filtering. Bei Ereignissen mit den Schweregraden „Start“ und „Stop“ wird das Erzeugen von Protokollausgaben verhindert.However, events with "Start" and "Stop" severity levels are prevented from producing log output.

Filterung für alle „My.Application.Log“-ListenerFiltering for All My.Application.Log Listeners

Das My.Application.Log-Objekt verwendet einen SourceSwitch mit dem Namen DefaultSwitch, um zu steuern, welche Meldungen von den Methoden WriteEntry und WriteException an die Protokolllistener übergeben werden.The My.Application.Log object uses a SourceSwitch named DefaultSwitch to control which messages it passes from the WriteEntry and WriteException methods to the log listeners. Sie können DefaultSwitch in der Konfigurationsdatei der Anwendung konfigurieren, indem Sie dessen Wert auf einen der SourceLevels-Enumerationswerte festlegen.You can configure DefaultSwitch in the application's configuration file by setting its value to one of the SourceLevels enumeration values. Standardmäßig ist der Wert „Information“.By default, its value is "Information".

In dieser Tabelle werden die Schweregrade gezeigt, die von Protokollen für das Schreiben einer Nachricht an die Listener in einer bestimmten DefaultSwitch-Einstellung benötigt werden.This table shows the severity level required for Log to write a message to the listeners, given a particular DefaultSwitch setting.

DefaultSwitch-WertDefaultSwitch Value Für die Ausgabe benötigter Schweregrad der NachrichtenMessage severity required for output
Critical Critical
Error Critical oder ErrorCritical or Error
Warning Critical, Error oder WarningCritical, Error, or Warning
Information Critical, Error, Warning oder InformationCritical, Error, Warning, or Information
Verbose Critical, Error, Warning, Information oder VerboseCritical, Error, Warning, Information, or Verbose
ActivityTracing Start, Stop, Suspend, Resume oder TransferStart, Stop, Suspend, Resume, or Transfer
All Alle Nachrichten sind zulässig.All messages are allowed.
Off Alle Nachrichten sind blockiert.All messages are blocked.

Hinweis

Die Methoden WriteEntry und WriteException verfügen beide über eine Überladung, die keinen Schweregrad angibt.The WriteEntry and WriteException methods each have an overload that does not specify a severity level. Der implizite Schweregrad für die Überladung WriteEntry ist „Information“, und der implizite Schweregrad für die Überladung WriteException ist „Error“.The implicit severity level for the WriteEntry overload is "Information", and the implicit severity level for the WriteException overload is "Error".

In dieser Tabelle wird die im vorherigen Beispiel gezeigte Protokollausgabe erklärt: Mit der Standardeinstellung DefaultSwitch von „Information“ erzeugt nur der zweite Aufruf der Methode WriteEntry und der Aufruf der Methode WriteException eine Protokollausgabe.This table explains the log output shown in the previous example: with the default DefaultSwitch setting of "Information", only the second call to the WriteEntry method and the call to the WriteException method produce log output.

So protokollieren Sie nur Aktivitätsablauf-VerfolgungsereignisseTo log only activity tracing events

  1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf „app.config“, und wählen Sie Öffnen aus.Right-click app.config in the Solution Explorer and select Open.

    - oder - -or-

    Wenn keine app.config-Datei vorhanden ist:If there is no app.config file:

    1. Klicken Sie im Menü Projekt auf Neues Element hinzufügen.On the Project menu, choose Add New Item.

    2. Wählen Sie im Dialogfeld Neues Element hinzufügen den Eintrag Anwendungskonfigurationsdateiaus.From the Add New Item dialog box, choose Application Configuration File.

    3. Klicken Sie auf Hinzufügen.Click Add.

  2. Suchen Sie den Abschnitt <switches>, der sich im Abschnitt <system.diagnostics> im Abschnitt <configuration> der obersten Ebene befindet.Locate the <switches> section, which is in the <system.diagnostics> section, which is in the top-level <configuration> section.

  3. Suchen Sie das Element, das DefaultSwitch zur Auflistung von Schaltern hinzufügt.Find the element that adds DefaultSwitch to the collection of switches. Es sollte in etwa wie dieses Element aussehen:It should look similar to this element:

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

  4. Ändern Sie den Wert des value-Attributs zu „ActivityTracing“.Change the value of the value attribute to "ActivityTracing".

  5. Der Inhalt der app.config-Datei sollte ähnlich dem folgenden XML-Code sein:The content of the app.config file should be similar to the following 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. Führen Sie die Anwendung im Debugger aus.Run the application in the debugger.

  7. Drücken Sie Button1.Press Button1.

    Die Anwendung schreibt die folgenden Informationen in die Debugausgabe und die Protokolldatei der Anwendung:The application writes the following information to the application's debug output and log file:

    DefaultSource Start: 4 : Entering Button1_Click

    DefaultSource Stop: 5 : Leaving Button1_Click

  8. Schließen Sie die Anwendung.Close the application.

  9. Ändern Sie den Wert des value-Attributs zurück zu „Information“.Change the value of the value attribute back to "Information".

    Hinweis

    Die Einstellung des Schalters DefaultSwitch steuert nur My.Application.Log.The DefaultSwitch switch setting controls only My.Application.Log. Das Verhalten der Klassen .NET Framework.NET Framework, System.Diagnostics.Trace und System.Diagnostics.Debug wird dadurch nicht verändert.It does not change how the .NET Framework.NET Framework System.Diagnostics.Trace and System.Diagnostics.Debug classes behave.

Einzelne Filterung für alle „My.Application.Log“-ListenerIndividual Filtering For My.Application.Log Listeners

Im vorherige Beispiel wurde gezeigt, wie Sie die Filterung für alle My.Application.Log-Ausgaben ändern können.The previous example shows how to change the filtering for all My.Application.Log output. In diesem Beispiel wird veranschaulicht, wie Sie einen einzelnen Protokolllistener filtern.This example demonstrates how to filter an individual log listener. Standardmäßig verwendet eine Anwendung zwei Listener, die in die Debugausgabe und die Protokolldatei der Anwendung schreiben.By default, an application has two listeners that write to the application's debug output and the log file.

Die Konfigurationsdatei steuert das Verhalten der Protokolllistener durch Zulassen eines Filters für jeden Listener, vergleichbar mit einem Schalter für My.Application.Log.The configuration file controls the behavior of the log listeners by allowing each one to have a filter, which is similar to a switch for My.Application.Log. Ein Protokolllistener gibt nur eine Meldung aus, wenn der Schweregrad der Meldung durch den DefaultSwitch des Protokolls und den Filter des Protokolllisteners zugelassen ist.A log listener will output a message only if the message's severity is allowed by both the log's DefaultSwitch and the log listener's filter.

In diesem Beispiel wird veranschaulicht, wie Sie eine Filterung für einen neuen Debuglistener konfigurieren und zum Log-Objekt hinzufügen.This example demonstrates how to configure filtering for a new debug listener and add it to the Log object. Der standardmäßige Debuglistener sollte aus dem Log-Objekt entfernt werden. Hierdurch wird deutlich gemacht, dass die Debugmeldungen direkt vom neuen Debuglistener stammen.The default debug listener should be removed from the Log object, so it is clear that the debug messages come from the new debug listener.

So protokollieren Sie nur Aktivitätsablaufverfolgungs-EreignisseTo log only activity-tracing events

  1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf „app.config“, und wählen Sie Öffnen aus.Right-click app.config in the Solution Explorer and choose Open.

    - oder - -or-

    Wenn keine app.config-Datei vorhanden ist:If there is no app.config file:

    1. Klicken Sie im Menü Projekt auf Neues Element hinzufügen.On the Project menu, choose Add New Item.

    2. Wählen Sie im Dialogfeld Neues Element hinzufügen den Eintrag Anwendungskonfigurationsdateiaus.From the Add New Item dialog box, choose Application Configuration File.

    3. Klicken Sie auf Hinzufügen.Click Add.

  2. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf „app.config“.Right-click app.config in Solution Explorer. Wählen Sie Öffnen aus.Choose Open.

  3. Suchen Sie den Abschnitt <listeners> im Abschnitt <source> mit dem name-Attribut „DefaultSource“, das sich im Abschnitt <sources> befindet.Locate the <listeners> section, in the <source> section with the name attribute "DefaultSource", which is under the <sources> section. Der Abschnitt <sources> befindet sich im Abschnitt <system.diagnostics> im Abschnitt <configuration> der obersten Ebene.The <sources> section is under the <system.diagnostics> section, in the top-level <configuration> section.

  4. Fügen Sie dem Abschnitt <listeners> dieses Element hinzu:Add this element to the <listeners> section:

    <!-- 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.Locate the <sharedListeners> section, in the <system.diagnostics> section, in the top-level <configuration> section.

  6. Fügen Sie dem <sharedListeners> -Abschnitt dieses Element hinzu:Add this element to that <sharedListeners> section:

    <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 einen der SourceLevels-Enumerationswerte als sein initializeData-Attribut.The EventTypeFilter filter takes one of the SourceLevels enumeration values as its initializeData attribute.

  7. Der Inhalt der app.config-Datei sollte ähnlich dem folgenden XML-Code sein:The content of the app.config file should be similar to the following 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. Führen Sie die Anwendung im Debugger aus.Run the application in the debugger.

  9. Drücken Sie Button1.Press Button1.

    Die Anwendung schreibt die folgenden Informationen in die Protokolldatei der Anwendung:The application writes the following information to the application's log file:

    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.The application writes less information to the application's debug output because of the more restrictive filtering.

    Default Error 2 Error

  10. Schließen Sie die Anwendung.Close the application.

Weitere Informationen zum Ändern der Protokolleinstellungen nach der Bereitstellung finden Sie unter Working with Application Logs (Arbeiten mit Anwendungsprotokollen).For more information about changing log settings after deployment, see Working with Application Logs.

Siehe auchSee Also

Exemplarische Vorgehensweise: Bestimmen, wohin „My.Application.Log“ Informationen schreibtWalkthrough: Determining Where My.Application.Log Writes Information
Exemplarische Vorgehensweise: Ändern des Orts, in den „My.Application.Log“ Informationen schreibtWalkthrough: Changing Where My.Application.Log Writes Information
Exemplarische Vorgehensweise: Erstellen von benutzerdefinierten ProtokolllistenernWalkthrough: Creating Custom Log Listeners
Gewusst wie: Schreiben von ProtokollmeldungenHow to: Write Log Messages
AblaufverfolgungsschalterTrace Switches
Protokollieren von Informationen aus der AnwendungLogging Information from the Application