Arbeiten mit Anwendungsprotokollen in Visual BasicWorking with Application Logs in Visual Basic

Mithilfe der My.Applicaton.Log - und My.Log -Objekte ist es einfach, Protokollierungs- und Ablaufverfolgungsinformationen in Protokolle zu schreiben.The My.Applicaton.Log and My.Log objects make it easy to write logging and tracing information to logs.

Protokollierung von MeldungenHow Messages are Logged

Zuerst wird der Schweregrad der Meldung mithilfe der Switch -Eigenschaft der TraceSource -Eigenschaft des Protokolls überprüft.First, the severity of the message is checked with the Switch property of the log's TraceSource property. Standardmäßig werden nur Meldungen vom Schweregrad "Information" und höher an die Nachverfolgungslistener übergeben, die in der TraceListener -Auflistung des Protokolls angegeben sind.By default, only messages of severity "Information" and higher are passed on to the trace listeners, specified in the log's TraceListener collection. Anschließend vergleicht jeder Listener den Schweregrad der Meldung mit der Eigenschaft Switch des Listeners.Then, each listener compares the severity of the message to the listener's Switch property. Wenn der Schweregrad der Meldung ausreichend hoch ist, schreibt der Listener die Meldung.If the message's severity is high enough, the listener writes out the message.

Im folgenden Diagramm ist dargestellt, wie eine in die WriteEntry -Methode geschriebene Meldung an die WriteLine -Methoden der Ablaufverfolgungslistener des Protokolls übergeben wird:The following diagram shows how a message written to the WriteEntry method gets passed to the WriteLine methods of the log's trace listeners:

Aufruf von „My Log“My Log Call

Das Verhalten von Protokoll und Ablaufverfolgungslistener lässt sich durch Ändern der Konfigurationsdatei der Anwendung ändern.You can change the behavior of the log and the trace listeners by changing the application's configuration file. Das folgende Diagramm stellt die Entsprechung zwischen den Teilen des Protokolls und der Konfigurationsdatei dar.The following diagram shows the correspondence between the parts of the log and the configuration file.

Konfiguration von „Log“ für „My“My Log Configuration

Protokollspeicherorte von MeldungenWhere Messages are Logged

Wenn die Assembly keine Konfigurationsdatei aufweist, schreiben die Objekte My.Application.Log und My.Log in die Debugausgabe der Anwendung (mithilfe der DefaultTraceListener -Klasse).If the assembly has no configuration file, the My.Application.Log and My.Log objects write to the application's debug output (through the DefaultTraceListener class). Darüber hinaus schreibt das My.Application.Log -Objekt in die Protokolldatei der Assembly (mithilfe der FileLogTraceListener -Klasse), während das My.Log -Objekt in die Ausgabe der ASP.NET-Webseite schreibt (mithilfe der WebPageTraceListener -Klasse).In addition, the My.Application.Log object writes to the assembly's log file (through the FileLogTraceListener class), while the My.Log object writes to the ASP.NET Web page's output (through the WebPageTraceListener class).

Die Debugausgabe kann beim Ausführen der Anwendung im Debugmodus im Visual Studio-Fenster Ausgabe angezeigt werden.The debug output can be viewed in the Visual Studio Output window when running your application in debug mode. Klicken Sie zum Öffnen des Fensters Ausgabe auf das Menüelement Debug , zeigen Sie auf Fenster, und klicken Sie dann auf Ausgabe.To open the Output window, click the Debug menu item, point to Windows, and then click Output. Wählen Sie im Fenster Ausgabe im Feld Ausgabe anzeigen von den Wert Debug aus.In the Output window, select Debug from the Show output from box.

Standardmäßig schreibt My.Application.Log die Protokolldatei in den Pfad für die Anwendungsdaten des Benutzers.By default, My.Application.Log writes the log file in the path for the user's application data. Diesen Pfad können Sie aus der Eigenschaft FullLogFileName des DefaultFileLogWriter -Objekts abrufen.You can get the path from the FullLogFileName property of the DefaultFileLogWriter object. Das Format des Pfades ist wie folgt:The format of that path is as follows:

BasePath\CompanyName\ProductName\ProductVersion

Ein typischer Wert für BasePath ist etwa dieser:A typical value for BasePath is as follows.

C:\Dokumente und Einstellungen\username\AnwendungsdatenC:\Documents and Settings\username\Application Data

Die Werte von CompanyName, ProductNameund ProductVersion stammen aus den Assemblyinformationen der Anwendung.The values of CompanyName, ProductName, and ProductVersion come from the application's assembly information. Der Name der Protokolldatei hat die Form " AssemblyName.log", wobei AssemblyName der Dateiname der Assembly ohne Erweiterung ist.The form of the log file name is AssemblyName.log, where AssemblyName is the file name of the assembly without the extension. Wenn mehr als eine Protokolldatei erforderlich ist, etwa wenn die ursprüngliche Protokolldatei zu dem Zeitpunkt, da die Anwendung versucht, in es zu schreiben, nicht verfügbar ist, hat der Name der Protokolldatei die Form " AssemblyName-iteration.log", wobei iteration ein positiver Integer.If more than one log file is needed, such as when the original log is unavailable when the application attempts to write to the log, the form for the log file name is AssemblyName-iteration.log, where iteration is a positive Integer.

Sie können das Standardverhalten außer Kraft setzen, indem Sie die Konfigurationsdateien des Computers und der Anwendung hinzufügen oder ändern.You can override the default behavior by adding or changing the computer's and the application's configuration files. Weitere Informationen finden Sie unter Walkthrough: Changing Where My.Application.Log Writes Information.For more information, see Walkthrough: Changing Where My.Application.Log Writes Information.

Konfigurieren von ProtokolleinstellungenConfiguring Log Settings

Die Standardimplementierung des Log -Objekts funktioniert ohne Anwendungskonfigurationsdatei, "app.config". Um die Standardwerte zu ändern, müssen Sie eine Konfigurationsdatei mit den neuen Einstellungen hinzufügen.The Log object has a default implementation that works without an application configuration file, app.config. To change the defaults, you must add a configuration file with the new settings. Weitere Informationen finden Sie unter Walkthrough: Filtering My.Application.Log Output.For more information, see Walkthrough: Filtering My.Application.Log Output.

Die Protokollkonfigurationsabschnitte befinden sich im <system.diagnostics> -Knoten im <configuration> -Hauptknoten der app.config-Datei.The log configuration sections are located in the <system.diagnostics> node in the main <configuration> node of the app.config file. Die Protokollinformationen sind in mehreren Knoten definiert:Log information is defined in several nodes:

  • Die Listener für das Log -Objekt sind in dem <sources> -Knoten mit dem Namen "DefaultSource" definiert.The listeners for the Log object are defined in the <sources> node named DefaultSource.

  • Der Schweregradfilter für das Log -Objekt ist in dem <switches> -Knoten mit dem Namen "DefaultSwitch" definiert.The severity filter for the Log object is defined in the <switches> node named DefaultSwitch.

  • Die Protokolllistener sind im <sharedListeners> -Knoten definiert.The log listeners are defined in the <sharedListeners> node.

Beispiele für <sources>-, <switches>- und <sharedListeners> -Knoten sind im folgenden Code dargestellt:Examples of <sources>, <switches>, and <sharedListeners> nodes are shown in the following code:

<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 der Protokolleinstellungen nach der BereitstellungChanging Log Settings after Deployment

Beim Entwickeln einer Anwendung werden deren Konfigurationseinstellungen in der app.config-Datei gespeichert, wie in den Beispielen oben dargestellt.When you develop an application, its configuration settings are stored in the app.config file, as shown in the examples above. Nach dem Bereitstellen der Anwendung kann das Protokoll durch Bearbeiten der Konfigurationsdatei weiterhin konfiguriert werden.After you deploy your application, you can still configure the log by editing the configuration file. In einer Windows-basierten Anwendung ist der Name dieser Datei " applicationName.exe.config", und sie muss sich im gleichen Ordner wie die Programmdatei befinden.In a Windows-based application, this file's name is applicationName.exe.config, and it must reside in the same folder as the executable file. Für eine Webanwendung ist dies die "Web.config"-Datei, die dem Projekt zugeordnet ist.For a Web application, this is the Web.config file associated with the project.

Wenn die Anwendung den Code, der eine Instanz einer Klasse erstellt, zum ersten Mal ausführt, prüft sie die Konfigurationsdatei auf Informationen zum Objekt.When your application executes the code that creates an instance of a class for the first time, it checks the configuration file for information about the object. Für das Log -Objekt geschieht das beim ersten Zugriff auf das Log -Objekt.For the Log object, this happens the first time the Log object is accessed. Das System durchsucht die Konfigurationsdatei für jedes Objekt nur ein Mal – wenn die Anwendung das Objekt erstmalig erstellt.The system examines the configuration file only once for any particular object—the first time your application creates the object. Daher müssen Sie ggf. die Anwendung erneut starten, damit die Änderungen wirksam werden.Therefore, you may need to restart the application for the changes to take effect.

In einer bereitgestellten Anwendung aktivieren Sie Ablaufverfolgungscode, indem Sie Schalterobjekte neu konfigurieren, bevor die Anwendung gestartet wird.In a deployed application, you enable trace code by reconfiguring switch objects before your application starts. Üblicherweise umfasst dies das Aktivieren oder Deaktivieren der Schalterobjekte oder Ändern der Ablaufverfolgungsebenen und dann das Neustarten Ihrer Anwendung.Typically, this involves turning the switch objects on and off or by changing the tracing levels, and then restarting your application.

SicherheitsüberlegungenSecurity Considerations

Berücksichtigen Sie beim Schreiben von Daten in das Protokoll folgende Punkte:Consider the following when writing data to the log:

  • Vermeiden Sie die Preisgabe von BenutzerinformationenAvoid leaking user information. . Stellen Sie sicher, dass die Anwendung nur genehmigte Informationen in das Protokoll schreibt.Ensure that your application writes only approved information to the log. Beispielsweise kann es akzeptabel sein, dass ein Anwendungsprotokoll Benutzernamen enthält, in keinem Fall jedoch Benutzerkennwörter.For example, it may be acceptable for the application log to contain user names, but not user passwords.

  • Achten Sie auf sichere ProtokollspeicherorteMake log locations secure. . Jedes Protokoll, das möglicherweise vertrauliche Informationen enthält, sollte an einem sicheren Ort gespeichert werden.Any log that contains potentially sensitive information should be stored in a secure location.

  • Vermeiden Sie irreführende InformationenAvoid misleading information. . Im Allgemeinen sollte die Anwendung alle von einem Benutzer eingegeben Daten überprüfen, bevor Sie sie verwendet.In general, your application should validate all data entered by a user before using that data. Dies umfasst auch das Schreiben von Daten in das Anwendungsprotokoll.This includes writing data to the application log.

  • Vermeiden Sie DienstverweigerungAvoid denial of service. . Wenn die Anwendung zu viele Informationen in das Protokoll schreibt, kann das Protokolls voll werden, oder die Suche nach wichtigen Informationen gestaltet sich schwierig.If your application writes too much information to the log, it could fill the log or make finding important information difficult.

Siehe auchSee Also

Microsoft.VisualBasic.Logging.Log
Protokollieren von Informationen aus der AnwendungLogging Information from the Application