Partager via


Comment : enregistrer des informations relatives aux services

Par défaut, tous les projets de service Windows ont la capacité d'interagir avec le journal des événements de l'application et d'y écrire des informations et des exceptions. Utilisez la propriété AutoLog pour indiquer si vous souhaitez intégrer cette fonctionnalité à votre application. Par défaut, l'enregistrement dans le journal est activé pour tout service que vous créez à l'aide du modèle de projet de service Windows. Vous pouvez utiliser un formulaire statique de la classe EventLog pour écrire des informations sur le 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 en tant que source valide d'événements dans le journal d'applications de l'ordinateur sur lequel le service est installé, lorsque l'enregistrement dans le journal est activé. Le service enregistre les informations chaque fois qu'il est démarré, arrêté, suspendu, redémarré, installé ou désinstallé. Il enregistre également toutes les pannes. Vous n'avez pas besoin d'écrire du code pour enregistrer des entrées dans le journal lorsque vous utilisez le comportement par défaut ; le service gère automatiquement cette tâche à votre place.

Si vous souhaitez écrire dans un journal des événements autre que le journal d'applications, vous devez définir la propriété AutoLog en lui attribuant la valeur false, créer votre propre journal personnalisé dans le code de votre service, et inscrire celui-ci en tant que source valide pour les entrées de ce journal. Vous devez ensuite écrire du code pour enregistrer les entrées dans le journal chaque fois que se produit une action qui vous intéresse.

Notes

Si vous utilisez un journal des événements personnalisé et que vous configurez votre application de service pour qu'elle y écrive des informations, vous ne devez pas tenter d'accéder à ce journal avant d'avoir défini la propriété ServiceName du service dans votre code. Le journal des événements a besoin de la valeur de cette propriété pour enregistrer votre service en tant que source valide d'événements.

Pour activer l'enregistrement dans un journal des événements par défaut pour votre service

  • Définissez la propriété AutoLog de votre composant en lui attribuant la valeur true.

    Notes

    Par défaut, elle a la valeur true. Vous n'avez pas besoin de définir explicitement cette propriété, sauf si vous générez un traitement plus complexe, tel que l'évaluation d'une condition suivie de la définition de la propriété AutoLog en fonction du résultat de cette condition.

Pour désactiver l'enregistrement dans le journal des événements pour votre service

  • Définissez la propriété AutoLog de votre composant en lui attribuant la valeur false.

    Me.AutoLog = False
    
            this.AutoLog = false;
    

Pour définir l'enregistrement dans un journal personnalisé

  1. Affectez à la propriété AutoLog la valeur false.

    Notes

    Vous devez attribuer la valeur False à la propriété AutoLog pour utiliser un journal personnalisé.

  2. Définissez 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 ainsi que le nom du fichier journal à créer.

  4. Définissez la propriété Source de l'instance de composant EventLog en lui attribuant la chaîne de source créée à l'étape 3 de cette procédure.

  5. Écrivez vos entrées en accédant à la méthode WriteEntry de l'instance de composant EventLog.

    Le code suivant illustre la manière de mettre en œuvre un journal personnalisé.

    Notes

    Dans cet exemple de code, une instance d'un composant EventLog est nommé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 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 Overrides Sub OnStart(ByVal args() As String)
      ' Write an entry to the log you've created.
      EventLog1.WriteEntry("In Onstart.")
    End Sub
    
        public UserService2()
        {
            // 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";
        }
    
    
    ...
    
    
    
        protected override void OnStart(string[] args)
        {
            // write an entry to the log
            eventLog1.WriteEntry("In OnStart.");
        }
    

Voir aussi

Concepts

Introduction aux applications de service Windows