Procédure : enregistrer des informations relatives aux services
Remarque
Cet article ne s’applique pas aux services hébergés dans .NET. Pour obtenir le contenu des services Windows utilisant Microsoft.Extensions.Hosting.BackgroundService et le modèle Service Worker le plus récent, consultez :
Par défaut, tous les projets de service Windows ont la possibilité d’interagir avec le journal d’événements des applications et d’y écrire des informations et des exceptions. Vous utilisez la propriété AutoLog pour indiquer si vous souhaitez cette fonctionnalité dans votre application. Par défaut, la journalisation est activée pour tout service que vous créez avec le modèle de projet de service Windows. Vous pouvez utiliser un formulaire statique de la classe EventLog pour écrire des informations de service dans un journal sans avoir à créer une instance d’un composant EventLog ou inscrire manuellement une source.
Le programme d’installation de votre service inscrit automatiquement chaque service de votre projet comme source valide d’événements dans le journal des applications sur l’ordinateur où le service est installé, quand la journalisation est activée. Le service enregistre des informations chaque fois que le service est démarré, arrêté, suspendu, repris, installé ou désinstallé. Il enregistre également tous les échecs qui se produisent. Vous n’avez pas besoin d’écrire du code pour écrire des entrées dans le journal quand vous utilisez le comportement par défaut. Le service le gère pour vous automatiquement.
Si vous souhaitez écrire dans un journal d’événements autre que le journal des applications, vous devez définir la propriété AutoLog sur false
, créer votre propre journal d’événements personnalisé dans le code de vos services et inscrire votre service en tant que source valide d’entrées de ce journal. Vous devez ensuite écrire le code nécessaire pour enregistrer des entrées dans le journal chaque fois qu’une action qui vous intéresse se produit.
Notes
Si vous utilisez un journal d’événements personnalisé et configurez votre application de service pour qu’elle écrive dans ce journal, vous ne devez pas tenter d’accéder au journal d’événements avant de définir la propriété ServiceName du service dans votre code. Le journal des événements a besoin de la valeur de cette propriété pour inscrire votre service en tant que source d’événements valide.
Pour activer la journalisation des événements par défaut pour votre service
Définissez la propriété AutoLog pour votre composant sur
true
.Notes
Par défaut, cette propriété est définie sur
true
. Vous n’avez pas besoin de la définir explicitement, sauf si vous générez un traitement plus complexe, comme l’évaluation d’une condition, puis que vous définissez la propriété AutoLog en fonction du résultat de cette condition.
Pour désactiver la journalisation des événements pour votre service
Définissez la propriété AutoLog pour votre composant sur
false
.AutoLog = false;
Me.AutoLog = False
Pour configurer l’enregistrement dans un journal personnalisé
Définissez la propriété AutoLog sur
false
.Notes
Vous devez définir AutoLog sur false pour utiliser un journal personnalisé.
Configurez une instance d’un composant EventLog dans votre application de service Windows.
Créez un journal personnalisé en appelant la méthode CreateEventSource et en spécifiant la chaîne source et le nom du fichier journal que vous souhaitez créer.
Définissez la propriété Source dans l’instance du composant EventLog sur la chaîne source que vous avez créée à l’étape 3.
Écrivez vos entrées en accédant à la méthode WriteEntry dans l’instance du composant EventLog .
Le code suivant montre comment configurer l’enregistrement dans un journal personnalisé.
Notes
Dans cet exemple de code, une instance d’un composant EventLog est appelée
eventLog1
(EventLog1
en Visual Basic). Si vous avez créé une instance avec un autre nom à l’étape 2, modifiez le code en conséquence.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 Sub
protected 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