Procédure : enregistrer des informations relatives aux services

Avertissement

Cette documentation ne concerne pas la dernière version du service Windows. Pour obtenir le contenu le plus récent sur les services Windows utilisant BackgroundService et le modèle de service Worker, 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.

    this.AutoLog = false;
    
    Me.AutoLog = False
    

Pour configurer l’enregistrement dans un journal personnalisé

  1. Définissez la propriété AutoLog sur false.

    Notes

    Vous devez définir AutoLog sur false pour utiliser un journal personnalisé.

  2. Configurez une instance d’un composant EventLog dans votre application de service Windows.

  3. 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.

  4. 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.

  5. É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 System.Diagnostics.EventLog();
        // Turn off autologging
    
        this.AutoLog = false;
        // create an event source, specifying the name of a log that
        // does not currently exist to create a new, custom log
        if (!System.Diagnostics.EventLog.SourceExists("MySource"))
        {
            System.Diagnostics.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
    

Voir aussi