Exemplarische Vorgehensweise: Filterung der Ausgaben von "My.Application.Log" (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. Sie können das Protokollierungsverhalten auch nach dem Erstellen der Anwendung ändern, da die Konfigurationsinformationen in der Konfigurationsdatei der Anwendung gespeichert sind.
Erste Schritte
Alle Nachrichten, die von My.Application.Log
geschrieben werden, haben einen zugeordneten Schweregrad, den die Filtermechanismen verwenden, um die Protokollausgabe zu steuern. Diese Beispielanwendung verwendet My.Application.Log
-Methoden zum Schreiben mehrerer Protokollmeldungen mit unterschiedlichen Schweregraden.
So installieren Sie die Beispielanwendung
Öffnen Sie ein neues Visual Basic-Windows-Anwendungsprojekt.
Fügen Sie eine Schaltfläche mit dem Namen „Button1“ zu „Form1“ hinzu.
Fügen Sie im Click-Ereignishandler den folgenden Code für „Button1“ 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)
Führen Sie die Anwendung im Debugger aus.
Drücken Sie 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.
Schließen Sie die Anwendung.
Informationen zum Anzeigen des Ausgabefensters der Anwendung finden Sie unter Ausgabefenster. 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).
Hinweis
Standardmäßig leert die Anwendung die Ausgabe der Protokolldatei, wenn die Anwendung geschlossen wird.
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. Dies liegt daran, dass die Schweregrade vonWriteEntry
undWriteException
„Information“ und „Error“ sind, die beide durch das standardmäßige Filtern von Protokollen des ObjektsMy.Application.Log
zugelassen sind. Bei Ereignissen mit den Schweregraden „Start“ und „Stop“ wird das Erzeugen von Protokollausgaben verhindert.
Filterung für alle „My.Application.Log“-Listener
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. Sie können DefaultSwitch
in der Konfigurationsdatei der Anwendung konfigurieren, indem Sie dessen Wert auf einen der SourceLevels-Enumerationswerte festlegen. Standardmäßig ist der Wert „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.
DefaultSwitch-Wert | Für die Ausgabe benötigter Schweregrad der Nachrichten |
---|---|
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 Nachrichten sind zulässig. |
Off |
Alle Nachrichten sind blockiert. |
Hinweis
Die Methoden WriteEntry
und WriteException
verfügen beide über eine Überladung, die keinen Schweregrad angibt. Der implizite Schweregrad für die Überladung WriteEntry
ist „Information“, und der implizite Schweregrad für die Überladung WriteException
ist „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.
So protokollieren Sie nur Aktivitätsablauf-Verfolgungsereignisse
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:
Klicken Sie im Menü Projekt auf Neues Element hinzufügen.
Wählen Sie im Dialogfeld Neues Element hinzufügen den Eintrag Anwendungskonfigurationsdateiaus.
Klicken Sie auf Hinzufügen.
Suchen Sie den Abschnitt
<switches>
, der sich im Abschnitt<system.diagnostics>
im Abschnitt<configuration>
der obersten Ebene befindet.Suchen Sie das Element, das
DefaultSwitch
zur Auflistung von Schaltern hinzufügt. Es sollte in etwa wie dieses Element aussehen:<add name="DefaultSwitch" value="Information" />
Ändern Sie den Wert des
value
-Attributs zu „ActivityTracing“.Der Inhalt der app.config-Datei sollte ähnlich dem folgenden XML-Code 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>
Führen Sie die Anwendung im Debugger aus.
Drücken Sie 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
Schließen Sie die Anwendung.
Ändern Sie den Wert des
value
-Attributs zurück zu „Information“.Hinweis
Die Einstellung des Schalters
DefaultSwitch
steuert nurMy.Application.Log
. Das Verhalten der .NET-Klassen System.Diagnostics.Trace und System.Diagnostics.Debug wird dadurch nicht verändert.
Einzelne Filterung für alle „My.Application.Log“-Listener
Im vorherige Beispiel wurde gezeigt, wie Sie die Filterung für alle My.Application.Log
-Ausgaben ändern können. In diesem Beispiel wird veranschaulicht, wie Sie einen einzelnen Protokolllistener filtern. Standardmäßig verwendet eine Anwendung zwei Listener, die in die Debugausgabe und die Protokolldatei der Anwendung schreiben.
Die Konfigurationsdatei steuert das Verhalten der Protokolllistener durch Zulassen eines Filters für jeden Listener, vergleichbar mit einem Schalter für 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.
In diesem Beispiel wird veranschaulicht, wie Sie eine Filterung für einen neuen Debuglistener konfigurieren und zum Log
-Objekt hinzufügen. Der standardmäßige Debuglistener sollte aus dem Log
-Objekt entfernt werden. Hierdurch wird deutlich gemacht, dass die Debugmeldungen direkt vom neuen Debuglistener stammen.
So protokollieren Sie nur Aktivitätsablaufverfolgungs-Ereignisse
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:
Klicken Sie im Menü Projekt auf Neues Element hinzufügen.
Wählen Sie im Dialogfeld Neues Element hinzufügen den Eintrag Anwendungskonfigurationsdateiaus.
Klicken Sie auf Hinzufügen.
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf „app.config“. Wählen Sie Öffnen aus.
Suchen Sie den Abschnitt
<listeners>
im Abschnitt<source>
mit demname
-Attribut „DefaultSource“, das sich im Abschnitt<sources>
befindet. Der Abschnitt<sources>
befindet sich im Abschnitt<system.diagnostics>
im Abschnitt<configuration>
der obersten Ebene.Fügen Sie dem Abschnitt
<listeners>
dieses Element hinzu:<!-- Remove the default debug listener. --> <remove name="Default"/> <!-- Add a filterable debug listener. --> <add name="NewDefault"/>
Suchen Sie den Abschnitt
<sharedListeners>
im<system.diagnostics>
-Abschnitt im Abschnitt<configuration>
der obersten Ebene.Fügen Sie dem
<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 einen der SourceLevels-Enumerationswerte als sein
initializeData
-Attribut.Der Inhalt der app.config-Datei sollte ähnlich dem folgenden XML-Code 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>
Führen Sie die Anwendung im Debugger aus.
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.
Default Error 2 Error
Schließen Sie die Anwendung.
Weitere Informationen zum Ändern der Protokolleinstellungen nach der Bereitstellung finden Sie unter Working with Application Logs (Arbeiten mit Anwendungsprotokollen).
Weitere Informationen
- Exemplarische Vorgehensweise: Bestimmen, wohin „My.Application.Log“ Informationen schreibt
- Exemplarische Vorgehensweise: Ändern des Orts, in den „My.Application.Log“ Informationen schreibt
- Exemplarische Vorgehensweise: Erstellen von benutzerdefinierten Protokolllistenern
- Gewusst wie: Schreiben von Protokollmeldungen
- Ablaufverfolgungsschalter
- Protokollieren von Informationen aus der Anwendung