Exemplarische Vorgehensweise: Filterung der Ausgaben von "My.Application.Log"
Aktualisiert: November 2007
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
Erstellen Sie eine Windows-Anwendung für Visual Basic als neues Projekt.
Fügen Sie Form1 eine Schaltfläche mit dem Namen Button1 hinzu.
Fügen Sie im Click-Ereignishandler für Button1 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)
Führen Sie die Anwendung im Debugger aus.
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.
Schließen Sie die Anwendung.
Informationen darüber, wie Sie das Debuggingausgabefenster 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.
Hinweis: |
---|
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 ("My.Application.Log" und "My.Log") und den Aufruf der WriteException-Methode ("My.Application.Log" und "My.Log") 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, Error, Warning oder Information. |
|
Critical, Error, Warning, Information oder Verbose |
|
Alle Meldungen werden weitergeleitet. |
|
Alle Meldungen werden blockiert. |
Hinweis: |
---|
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 werden die im vorhergehenden Beispiel gezeigten Protokollausgaben erläutert: Mit der Standardeinstellung "Information" für DefaultSwitch werden nur für den zweiten Aufruf der WriteEntry-Methode und den Aufruf der WriteException-Methode Protokollausgaben erzeugt.
So protokollieren Sie ausschließlich Ereignisse aus der Aktivitätsablaufverfolgung
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:
Klicken Sie im Menü Projekt auf Neues Element hinzufügen.
Klicken Sie im Dialogfeld Neues Element hinzufügen auf Anwendungskonfigurationsdatei.
Klicken Sie auf Hinzufügen.
Suchen Sie den <switches>-Abschnitt innerhalb des <system.diagnostics>-Abschnitts, der sich wiederum im <configuration>-Abschnitt auf der obersten Ebene befindet.
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" />
Ändern Sie den Wert des value-Attributs in "ActivityTracing".
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>
Führen Sie die Anwendung im Debugger aus.
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
Schließen Sie die Anwendung.
Ändern Sie den Wert des value-Attributs zurück in "Information".
Hinweis: |
---|
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
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:
Klicken Sie im Menü Projekt auf Neues Element hinzufügen.
Klicken Sie im Dialogfeld Neues Element hinzufügen auf Anwendungskonfigurationsdatei.
Klicken Sie auf Hinzufügen.
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf app.config. Wählen Sie Öffnen aus.
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).
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"/>
Suchen Sie den <sharedListeners>-Abschnitt im <system.diagnostics>-Abschnitt im <configuration>-Abschnitt auf der obersten Ebene.
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.
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>
Führen Sie die Anwendung im Debugger aus.
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
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
Exemplarische Vorgehensweise: Ändern des Ortes, in den "My.Application.Log" Informationen schreibt
Exemplarische Vorgehensweise: Erstellen von benutzerdefinierten Protokolllistenern
Gewusst wie: Schreiben von Protokollmeldungen