Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Hinweis
Dieser Artikel gilt nicht für gehostete Dienste in .NET. Die neuesten Inhalte zu Windows-Diensten mit Microsoft.Extensions.Hosting.BackgroundService und der Vorlage "Worker Service" finden Sie unter:
Standardmäßig haben alle Windows-Dienstprojekte die Möglichkeit, mit dem Anwendungsereignisprotokoll zu interagieren und Informationen und Ausnahmen zu schreiben. Sie verwenden die AutoLog Eigenschaft, um anzugeben, ob diese Funktionalität in Ihrer Anwendung verwendet werden soll. Standardmäßig ist die Protokollierung für jeden Dienst aktiviert, den Sie mit der Projektvorlage "Windows-Dienst" erstellen. Sie können eine statische Form der EventLog Klasse verwenden, um Dienstinformationen in ein Protokoll zu schreiben, ohne eine Instanz einer EventLog Komponente erstellen oder eine Quelle manuell registrieren zu müssen.
Das Installationsprogramm für Ihren Dienst registriert jeden Dienst in Ihrem Projekt automatisch als gültige Quelle von Ereignissen mit dem Anwendungsprotokoll auf dem Computer, auf dem der Dienst installiert ist, wenn die Protokollierung aktiviert ist. Der Dienst protokolliert Informationen jedes Mal, wenn der Dienst gestartet, beendet, angehalten, fortgesetzt, installiert oder deinstalliert wird. Außerdem werden alle aufgetretenen Fehler protokolliert. Sie müssen keinen Code schreiben, um Einträge in das Protokoll zu schreiben, wenn Sie das Standardverhalten verwenden. der Dienst behandelt dies automatisch.
Wenn Sie in ein anderes Ereignisprotokoll als das Anwendungsprotokoll schreiben möchten, müssen Sie die AutoLog Eigenschaft auf falsefestlegen, ihr eigenes benutzerdefiniertes Ereignisprotokoll in Ihrem Dienstcode erstellen und Ihren Dienst als gültige Quelle von Einträgen für dieses Protokoll registrieren. Sie müssen dann Code schreiben, um Einträge im Protokoll aufzuzeichnen, wenn eine Aktion eintritt, an der Sie interessiert sind.
Hinweis
Wenn Sie ein benutzerdefiniertes Ereignisprotokoll verwenden und Ihre Dienstanwendung so konfigurieren, dass sie in das Ereignisprotokoll geschrieben wird, dürfen Sie nicht versuchen, auf das Ereignisprotokoll zuzugreifen, bevor Sie die Eigenschaft des Diensts ServiceName in Ihrem Code festlegen. Das Ereignisprotokoll benötigt den Wert dieser Eigenschaft, um Ihren Dienst als gültige Quelle von Ereignissen zu registrieren.
So aktivieren Sie die Standardereignisprotokollierung für Ihren Dienst
Legen Sie die AutoLog, Eigenschaft für Ihre Komponente auf
true.Hinweis
Standardmäßig ist diese Eigenschaft auf
truefestgelegt. Sie müssen dies nicht explizit festlegen, es sei denn, Sie erstellen eine komplexere Verarbeitung, z. B. das Auswerten einer Bedingung und das anschließende Festlegen der AutoLog Eigenschaft basierend auf dem Ergebnis dieser Bedingung.
So deaktivieren Sie die Ereignisprotokollierung für Ihren Dienst
Legen Sie die AutoLog-Eigenschaft für Ihre Komponente auf
false.AutoLog = false;Me.AutoLog = False
So richten Sie die Protokollierung in ein benutzerdefiniertes Protokoll ein
Setzen Sie die AutoLog-Eigenschaft auf
false.Hinweis
Um ein benutzerdefiniertes Protokoll zu verwenden, müssen Sie AutoLog auf 'false' setzen.
Richten Sie eine Instanz einer EventLog Komponente in Ihrer Windows-Dienstanwendung ein.
Erstellen Sie ein benutzerdefiniertes Protokoll, indem Sie die CreateEventSource Methode aufrufen und die Quellzeichenfolge und den Namen der Protokolldatei angeben, die Sie erstellen möchten.
Legen Sie die Source Eigenschaft für die EventLog Komponenteninstanz auf die Quellzeichenfolge fest, die Sie in Schritt 3 erstellt haben.
Schreiben Sie Ihre Einträge, indem Sie auf die WriteEntry Methode in der EventLog Komponenteninstanz zugreifen.
Der folgende Code zeigt, wie Sie die Protokollierung für ein benutzerdefiniertes Protokoll einrichten.
Hinweis
In diesem Codebeispiel wird eine Instanz einer EventLog Komponente benannt
eventLog1(EventLog1in Visual Basic). Wenn Sie eine Instanz mit einem anderen Namen in Schritt 2 erstellt haben, ändern Sie den Code entsprechend.public UserService2() { eventLog1 = new EventLog(); // Turn off autologging AutoLog = false; // create an event source, specifying the name of a log that // does not currently exist to create a new, custom log if (!EventLog.SourceExists("MySource")) { EventLog.CreateEventSource( "MySource", "MyLog"); } // configure the event log instance to use this source name eventLog1.Source = "MySource"; eventLog1.Log = "MyLog"; }Public Sub New() ' Turn off autologging Me.AutoLog = False ' Create a new event source and specify a log name that ' does not exist to create a custom log If Not System.Diagnostics.EventLog.SourceExists("MySource") Then System.Diagnostics.EventLog.CreateEventSource("MySource", "MyLog") End If ' Configure the event log instance to use this source name EventLog1.Source = "MySource" End Subprotected override void OnStart(string[] args) { // write an entry to the log eventLog1.WriteEntry("In OnStart."); }Protected Overrides Sub OnStart(ByVal args() As String) ' Write an entry to the log you've created. EventLog1.WriteEntry("In Onstart.") End Sub