Arbeiten mit Anwendungsprotokollen in Visual Basic
Mit dem My.Applicaton.Log-Objekt und dem My.Log-Objekt können auf einfache Weise Protokoll- und Ablaufverfolgungsinformationen in Protokolle geschrieben werden.
Ablauf beim Protokollieren von Meldungen
Zuerst wird der Schweregrad einer Meldung mithilfe der Switch-Eigenschaft der TraceSource-Eigenschaft des Protokolls geprüft. Standardmäßig werden nur Meldungen mit dem Schweregrad "Information" oder höher an die Ablaufverfolgungslistener weitergeleitet, die in der TraceListener-Auflistung des Protokolls angegeben sind. Anschließend vergleicht jeder Listener den Schweregrad der Meldung mit der Switch-Eigenschaft des Listeners. Wenn der Schweregrad der Meldung ausreichend hoch ist, schreibt der Listener die Meldung in das Protokoll.
Im folgenden Diagramm wird dargestellt, wie eine an die WriteEntry-Methode übergebene Meldung an die WriteLine-Methoden der Ablaufverfolgungslistener des Protokolls weitergeleitet wird:
Sie können das Verhalten des Protokolls und der Ablaufverfolgungslistener durch Bearbeiten der Konfigurationsdatei der Anwendung ändern. Das folgende Diagramm zeigt die Zusammenhänge zwischen den Bestandteilen des Protokolls und der Konfigurationsdatei.
Speicherorte der Meldungsprotokollierung
Wenn keine Konfigurationsdatei für die Assembly vorhanden ist, schreiben das My.Application.Log-Objekt und das My.Log-Objekt in die Debugausgabe der Anwendung (über die DefaultTraceListener-Klasse). Darüber hinaus schreibt das My.Application.Log-Objekt in die Protokolldatei der Assembly (über die FileLogTraceListener-Klasse), während das My.Log-Objekt in die Ausgabe der ASP.NET-Webseite schreibt (über die WebPageTraceListener-Klasse).
Die Debugausgabe kann im Ausgabefenster von Visual Studio angezeigt werden, wenn die Anwendung im Debugmodus ausgeführt wird. Um das Ausgabefenster zu öffnen, klicken Sie auf das Menüelement Debuggen, zeigen Sie auf Fenster, und klicken Sie dann auf Ausgabe. Wählen Sie im Ausgabefenster im Feld Ausgabe anzeigen von die Option Debuggen aus.
My.Application.Log schreibt die Protokolldatei standardmäßig in den Pfad für die Anwendungsdaten des Benutzers. Sie können den Pfad aus der FullLogFileName-Eigenschaft des DefaultFileLogWriter-Objekts abrufen. Der Pfad weist folgendes Format auf:
BasePath\CompanyName\ProductName\ProductVersion
Ein typischer Wert für BasePath lautet wie folgt.
C:\Dokumente und Einstellungen\username\Anwendungsdaten
Die Werte von CompanyName, ProductName und ProductVersion stammen aus den Assemblyinformationen der Anwendung. Der Name der Protokolldatei ist nach dem Schema "Assemblyname.log" aufgebaut, wobei Assemblyname der Dateiname der Assembly ohne die Dateinamenerweiterung ist. Wenn mehrere Protokolldateien benötigt werden, beispielsweise wenn die ursprüngliche Datei bei einem Schreibvorgang nicht verfügbar ist, wird der Protokolldatei der Name "Assemblyname-Iteration.log" zugewiesen, wobei iteration ein positiver Integer ist.
Sie können das Standardverhalten überschreiben, indem Sie die Konfigurationsdateien des Computers und der Anwendung ändern bzw. eine entsprechende Konfigurationsdatei hinzufügen. Weitere Informationen hierzu finden Sie unter Exemplarische Vorgehensweise: Ändern des Orts, in den "My.Application.Log" Informationen schreibt (Visual Basic).
Konfigurieren von Protokolleinstellungen
Das Log-Objekt verfügt über eine Standardimplementierung, die ohne die Anwendungskonfigurationsdatei "app.config" funktioniert. Wenn Sie die Standardeinstellungen ändern möchten, müssen Sie eine Konfigurationsdatei mit den neuen Einstellungen hinzufügen. Weitere Informationen finden Sie unter Exemplarische Vorgehensweise: Filterung der Ausgaben von "My.Application.Log" (Visual Basic).
Die Konfigurationsabschnitte für das Protokoll befinden sich im <system.diagnostics>-Knoten im obersten <configuration>-Knoten der Datei app.config. Die Protokollinformationen werden in mehreren Knoten definiert:
Die Listener für das Log-Objekt werden im <sources>-Knoten mit dem Namen DefaultSource definiert.
Der Schweregradfilter für das Log-Objekt wird im <switches>-Knoten mit dem Namen DefaultSwitch definiert.
Die Protokolllistener werden im <sharedListeners>-Knoten definiert.
Im folgenden Code werden Beispiele für <sources>-Knoten, <switches>-Knoten und <sharedListeners>-Knoten gezeigt:
<configuration>
<system.diagnostics>
<sources>
<source name="DefaultSource" switchName="DefaultSwitch">
<listeners>
<add name="FileLog"/>
</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"
/>
</sharedListeners>
</system.diagnostics>
</configuration>
Ändern von Protokolleinstellungen nach der Bereitstellung
Beim Entwickeln einer Anwendung werden die Konfigurationseinstellungen in der Datei app.config gespeichert, wie in den oben stehenden Beispielen gezeigt. Nach dem Bereitstellen der Anwendung können Sie weiterhin das Protokoll konfigurieren, indem Sie die Konfigurationsdatei bearbeiten. Bei Windows-Anwendungen lautet der Name dieser Datei "Anwendungsname.exe.config", und diese muss sich in demselben Ordner wie die ausführbare Datei befinden. Bei einer Webanwendung handelt es sich dabei um die dem Projekt zugeordnete Datei Web.config.
Wenn die Anwendung den Code ausführt, der zum ersten Mal eine Instanz der Klasse erstellt, überprüft sie die Konfigurationsdatei auf Informationen über das Objekt. Für das Log-Objekt geschieht dies beim ersten Zugriff auf das Log-Objekt. Das System untersucht die Konfigurationsdatei nur ein Mal für jedes Objekt, d. h., wenn die Anwendung das Objekt erstellt. Daher müssen Sie die Anwendung nach Änderungen an der Konfiguration möglicherweise neu starten.
In einer bereits bereitgestellten Anwendung aktivieren Sie den Ablaufverfolgungscode, indem Sie Schalterobjekte vor dem Starten der Anwendung neu konfigurieren. In der Regel müssen Sie dazu die Schalterobjekte aktivieren und deaktivieren oder die Ablaufverfolgungsebenen ändern. Starten Sie die Anwendung anschließend neu.
Sicherheitsüberlegungen
Beachten Sie beim Schreiben von Daten in das Protokoll Folgendes:
Vermeiden Sie es, unbeabsichtigt vertrauliche Benutzerinformationen verfügbar zu machen. Stellen Sie sicher, dass die Anwendung nur genehmigte Informationen ins Protokoll schreibt. So könnte es z. B. zulässig sein, Benutzernamen ins Protokoll zu schreiben, jedoch keine Kennwörter.
Speichern Sie Protokolle an einem sicheren Speicherort. Insbesondere Protokolle, die möglicherweise vertrauliche Informationen enthalten, sollten an einem sicheren Speicherort gespeichert werden.
Vermeiden Sie irreführende Informationen. Alle Daten, die von Benutzern eingegeben wurden, sollten vor ihrer Verwendung überprüft werden. Dazu zählt auch das Schreiben der Daten in das Anwendungsprotokoll.
Vermeiden Sie Systemüberlastungen. Wenn eine Anwendung zu viele Informationen protokolliert, könnte der Speicherplatz für das Protokoll überschritten werden, und es könnte schwierig werden, wichtige Informationen zu finden.
Siehe auch
Referenz
Konzepte
Protokollieren von Informationen aus der Anwendung (Visual Basic)