Comment : enregistrer des informations relatives aux services
Mise à jour : novembre 2007
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. Pour plus d'informations, consultez Comment : créer et supprimer des journaux des événements personnalisés. 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.
Remarque : |
---|
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.
Remarque : 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;
this.set_AutoLog(false);
Pour définir l'enregistrement dans un journal personnalisé
Affectez à la propriété AutoLog la valeur false.
Remarque : Vous devez attribuer la valeur False à la propriété AutoLog pour utiliser un journal personnalisé.
Définissez une instance d'un composant EventLog dans votre application de service Windows. Pour plus d'informations, consultez Comment : créer des instances du composant EventLog.
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.
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.
É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é.
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."); }
public UserService2() { // Turn off autologging this.set_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.set_Source("MySource"); } ... protected void OnStart(System.String[] args) { // write an entry to the log eventLog1.WriteEntry("In OnStart."); }
Voir aussi
Tâches
Comment : créer et supprimer des journaux des événements personnalisés
Comment : créer des instances du composant EventLog