EventLog Classe

Définition

Fournit une interaction avec les journaux des événements Windows.

public ref class EventLog : System::ComponentModel::Component, System::ComponentModel::ISupportInitialize
public class EventLog : System.ComponentModel.Component, System.ComponentModel.ISupportInitialize
type EventLog = class
    inherit Component
    interface ISupportInitialize
Public Class EventLog
Inherits Component
Implements ISupportInitialize
Héritage
Implémente

Exemples

L’exemple suivant crée la source MySource d’événement si elle n’existe pas déjà et écrit une entrée dans le journal des événements MyNewLog.

Notes

À compter de Windows Vista, vous devez exécuter cette application en tant qu’administrateur.

#using <System.dll>

using namespace System;
using namespace System::Diagnostics;
using namespace System::Threading;
int main()
{
   
   // Create the source, if it does not already exist.
   if (  !EventLog::SourceExists( "MySource" ) )
   {
      //An event log source should not be created and immediately used.
      //There is a latency time to enable the source, it should be created
      //prior to executing the application that uses the source.
      //Execute this sample a second time to use the new source.
      EventLog::CreateEventSource( "MySource", "MyNewLog" );
      Console::WriteLine( "CreatingEventSource" );
      // The source is created.  Exit the application to allow it to be registered.
      return 0;
   }

   
   // Create an EventLog instance and assign its source.
   EventLog^ myLog = gcnew EventLog;
   myLog->Source = "MySource";
   
   // Write an informational entry to the event log.    
   myLog->WriteEntry( "Writing to event log." );
}
using System;
using System.Diagnostics;
using System.Threading;

class MySample{

    public static void Main(){

        // Create the source, if it does not already exist.
        if(!EventLog.SourceExists("MySource"))
        {
             //An event log source should not be created and immediately used.
             //There is a latency time to enable the source, it should be created
             //prior to executing the application that uses the source.
             //Execute this sample a second time to use the new source.
            EventLog.CreateEventSource("MySource", "MyNewLog");
            Console.WriteLine("CreatedEventSource");
            Console.WriteLine("Exiting, execute the application a second time to use the source.");
            // The source is created.  Exit the application to allow it to be registered.
            return;
        }

        // Create an EventLog instance and assign its source.
        EventLog myLog = new EventLog();
        myLog.Source = "MySource";

        // Write an informational entry to the event log.
        myLog.WriteEntry("Writing to event log.");
    }
}
Option Explicit
Option Strict

Imports System.Diagnostics
Imports System.Threading

Class MySample
    Public Shared Sub Main()
        
        If Not EventLog.SourceExists("MySource") Then
            ' Create the source, if it does not already exist.
            ' An event log source should not be created and immediately used.
            ' There is a latency time to enable the source, it should be created
            ' prior to executing the application that uses the source.
            ' Execute this sample a second time to use the new source.
            EventLog.CreateEventSource("MySource", "MyNewLog")
            Console.WriteLine("CreatingEventSource")
            'The source is created.  Exit the application to allow it to be registered.
            Return
        End If
        
        ' Create an EventLog instance and assign its source.
        Dim myLog As New EventLog()
        myLog.Source = "MySource"
        
        ' Write an informational entry to the event log.    
        myLog.WriteEntry("Writing to event log.")
    End Sub
End Class

Remarques

EventLog vous permet d’accéder aux journaux des événements Windows ou de les personnaliser, qui enregistrent des informations sur les événements logiciels ou matériels importants. À l’aide EventLogde , vous pouvez lire des journaux existants, écrire des entrées dans des journaux, créer ou supprimer des sources d’événements, supprimer des journaux et répondre aux entrées de journal. Vous pouvez également créer des journaux d’activité lors de la création d’une source d’événements.

Important

Ce type implémente l'interface IDisposable. Une fois que vous avez fini d’utiliser le type, vous devez le supprimer directement ou indirectement. Pour supprimer directement le type Dispose, appelez sa méthode dans un bloc try/catch. Pour la supprimer indirectement, utilisez une construction de langage telle que using (dans C#) ou Using (dans Visual Basic). Pour plus d’informations, consultez la section « Utilisation d’un objet qui implémente IDisposable » dans la rubrique de l’interface IDisposable.

En plus de fournir l’accès aux journaux d’événements individuels et à leurs entrées, la EventLog classe vous permet d’accéder à la collection de tous les journaux d’événements. Vous pouvez utiliser les static membres de pour supprimer des EventLog journaux, obtenir des listes de journaux, créer ou supprimer une source, ou déterminer si un ordinateur contient déjà une source particulière.

Il existe trois journaux d’événements par défaut : Application, Système et Sécurité. Un journal de sécurité est en lecture seule. D’autres applications et services que vous installez, tels qu’Active Directory, peuvent avoir des journaux d’événements supplémentaires.

Il existe des considérations de sécurité lors de l’utilisation de la EventLog classe . EventLog nécessite EventLogPermission des autorisations pour des actions spécifiques dans .NET Framework 2.0 et versions ultérieures, ou une confiance totale dans .NET Framework 1.0 et 1.1. Nous vous recommandons de EventLogPermission ne pas accorder de code partiellement approuvé. Vous ne devez jamais passer un objet de journal des événements, y compris EventLogEntryCollection des objets et EventLogEntry , à du code moins fiable. Par exemple, la création d’un EventLog objet, l’écriture d’une entrée, puis le passage de l’objet EventLog à du code de confiance partielle peuvent créer un problème de sécurité, car la possibilité de lire et d’écrire dans le journal des événements permet au code d’effectuer des actions telles que l’émission de messages de journal des événements au nom d’une autre application.

À compter de Windows Vista, le contrôle de compte d’utilisateur (UAC) détermine les informations d’identification d’un utilisateur. Si vous êtes membre du groupe Administrateurs intégrés, deux jetons d'accès au moment de l'exécution vous sont assignés : un jeton d'accès utilisateur standard et un jeton d'accès administrateur. Par défaut, vous êtes dans le rôle d'utilisateur standard. Pour exécuter le code qui accède au journal de sécurité, vous devez d’abord élever vos informations d’identification d’utilisateur standard à administrateur. Vous pouvez le faire lorsque vous démarrez une application en ouvrant le menu contextuel de l’application (si vous utilisez une souris, cliquez avec le bouton droit sur l’icône de l’application) et en indiquant que vous souhaitez exécuter en tant qu’administrateur.

Vous pouvez utiliser EventLog pour créer des journaux d’événements personnalisés que vous pouvez afficher via les observateur d'événements du serveur. Utilisez la RegisterDisplayName méthode pour afficher un nom localisé pour votre journal des événements dans le observateur d'événements. Utilisez la ModifyOverflowPolicy méthode pour configurer le comportement de votre journal des événements lorsqu’il atteint sa taille de journal maximale.

Pour lire à partir d’un journal des événements, spécifiez le nom du journal (Log propriété) et le nom de l’ordinateur serveur (MachineName propriété pour le journal des événements). Si vous ne spécifiez pas le nom de l’ordinateur serveur, l’ordinateur local, « . » est supposé. Il n’est pas nécessaire de spécifier la source de l’événement (Source propriété ), car une source est requise uniquement pour l’écriture dans les journaux. La Entries propriété est automatiquement remplie avec la liste des entrées du journal des événements.

Pour écrire dans un journal des événements, spécifiez ou créez une source d’événement (Source propriété ). Vous devez disposer d’informations d’identification d’administration sur l’ordinateur pour créer une source d’événement. La source d’événement inscrit votre application avec le journal des événements en tant que source valide d’entrées. Vous pouvez utiliser la source d’événement pour écrire dans un seul journal à la fois. La Source propriété peut être n’importe quelle chaîne aléatoire, mais le nom doit être distinct des autres sources sur l’ordinateur. La source de l’événement est généralement le nom de l’application ou une autre chaîne d’identification. La tentative de création d’une valeur en double Source lève une exception. Toutefois, un seul journal des événements peut être associé à plusieurs sources.

Si la source d’événements du journal des événements associé à l’instance EventLog n’existe pas, une nouvelle source d’événements est créée. Pour créer une source d’événement dans Windows Vista et versions ultérieures ou Windows Server 2003, vous devez disposer d’informations d’identification d’administration.

Cette exigence est due au fait que tous les journaux des événements, y compris les journaux de sécurité, doivent faire l’objet d’une recherche pour déterminer si la source de l’événement est unique. À compter de Windows Vista, les utilisateurs n’ont pas l’autorisation d’accéder au journal de sécurité ; par conséquent, un SecurityException est levée.

Important

La création ou la suppression d’une source d’événements nécessite la synchronisation du code sous-jacent à l’aide d’un mutex nommé. Si une application à privilèges élevés verrouille le mutex nommé, la tentative de création ou de suppression d’une source d’événement entraîne l’arrêt de la réponse de l’application jusqu’à ce que le verrou soit libéré. Pour éviter ce problème, n’accordez UnmanagedCode jamais d’autorisation à du code non approuvé. En outre, l’autorisation UnmanagedCode permet potentiellement de contourner d’autres autorisations et ne doit être accordée qu’à du code hautement fiable.

Les applications et les services doivent écrire dans le journal des applications ou dans un journal personnalisé. Les pilotes de périphérique doivent écrire dans le journal système. Si vous ne définissez pas explicitement la Log propriété , le journal des événements est défini par défaut sur le journal des applications.

Notes

Il n’y a rien pour empêcher une application d’écrire en tant que source inscrite. Si une application est autorisée Write , elle peut écrire des événements pour n’importe quelle source valide inscrite sur l’ordinateur.

Utilisez les WriteEvent méthodes et WriteEntry pour écrire des événements dans un journal des événements. Vous devez spécifier une source d’événement pour écrire des événements ; vous devez créer et configurer la source d’événement avant d’écrire la première entrée avec la source.

Créez la source d’événement lors de l’installation de votre application. Cela laisse le temps au système d’exploitation d’actualiser sa liste des sources d’événements inscrites et leur configuration. Si le système d’exploitation n’a pas actualisé sa liste de sources d’événements et que vous essayez d’écrire un événement avec la nouvelle source, l’opération d’écriture échoue. Vous pouvez configurer une nouvelle source à l’aide d’un EventLogInstaller objet ou de la CreateEventSource méthode . Vous devez disposer d’informations d’identification d’administration sur l’ordinateur pour créer une source d’événement.

Chaque source peut écrire dans un seul journal des événements à la fois ; Toutefois, votre application peut utiliser plusieurs sources pour écrire dans plusieurs journaux d’événements. Par exemple, votre application peut nécessiter plusieurs sources configurées pour différents journaux d’événements ou différents fichiers de ressources. Pour modifier les détails de configuration d’une source existante, vous devez supprimer la source, puis la créer avec la nouvelle configuration. Si d’autres applications ou composants utilisent la source existante, créez une source avec la configuration mise à jour au lieu de supprimer la source existante.

Vous pouvez inscrire la source d’événement avec des ressources localisées pour votre catégorie d’événement et vos chaînes de message. Votre application peut écrire des entrées de journal des événements à l’aide d’identificateurs de ressource au lieu de spécifier les valeurs de chaîne réelles. Reportez-vous aux EventLogInstaller classes et EventSourceCreationData pour plus d’informations sur la configuration de votre source avec des fichiers de ressources.

Si votre application écrit des valeurs de chaîne directement dans le journal des événements, vous n’avez pas besoin de définir les propriétés du fichier de ressources pour la source. La source doit être configurée pour écrire des entrées localisées ou pour écrire des chaînes directes. Si votre application écrit des entrées à l’aide d’identificateurs de ressource et de valeurs de chaîne, vous devez inscrire deux sources distinctes. Par exemple, configurez une source avec des fichiers de ressources, puis utilisez cette source dans la WriteEvent méthode pour écrire des entrées à l’aide d’identificateurs de ressource dans le journal des événements. Créez ensuite une autre source sans fichiers de ressources et utilisez cette source dans la WriteEntry méthode pour écrire des chaînes directement dans le journal des événements à l’aide de cette source.

Lors de l’écriture d’événements, vous devez au moins spécifier une chaîne de message ou l’identificateur de ressource d’une chaîne de message. D’autres propriétés d’événement sont facultatives. Voici quelques exemples de paramètres d’événement facultatifs :

  • Vous pouvez définir pour EventLogEntryType spécifier l’icône que le observateur d'événements affiche pour l’entrée.

  • Vous pouvez spécifier un identificateur de catégorie pour l’événement, si votre application utilise des catégories pour filtrer les événements.

  • Vous pouvez attacher des données binaires à votre entrée d’événement si vous souhaitez associer des informations supplémentaires à un événement donné.

Important

La journalisation des événements consomme de l’espace disque, du temps processeur et d’autres ressources système. Il est important de consigner uniquement les informations essentielles. Nous vous recommandons de placer les appels de journal des événements dans un chemin d’erreur, plutôt que dans le chemin d’accès du code main, afin qu’ils n’affectent pas les performances.

Pour obtenir la liste des valeurs de propriété initiales d’un instance de EventLog, consultez le EventLog constructeur .

Constructeurs

EventLog()

Initialise une nouvelle instance de la classe EventLog. N'associe pas l'instance à un journal.

EventLog(String)

Initialise une nouvelle instance de la classe EventLog. Associe l'instance à un journal sur l'ordinateur local.

EventLog(String, String)

Initialise une nouvelle instance de la classe EventLog. Associe l'instance à un journal sur l'ordinateur spécifié.

EventLog(String, String, String)

Initialise une nouvelle instance de la classe EventLog. Associe l'instance à un journal sur l'ordinateur spécifié et crée ou assigne la source spécifiée à EventLog.

Propriétés

CanRaiseEvents

Obtient une valeur qui indique si le composant peut déclencher un événement.

(Hérité de Component)
Container

Obtient le IContainer qui contient la Component.

(Hérité de Component)
DesignMode

Obtient une valeur qui indique si Component est actuellement en mode design.

(Hérité de Component)
EnableRaisingEvents

Obtient ou définit une valeur indiquant si EventLog reçoit les notifications d'un événement EntryWritten.

Entries

Obtient le contenu du journal des événements.

Events

Obtient la liste des gestionnaires d'événements attachés à ce Component.

(Hérité de Component)
Log

Obtient ou définit le nom du journal à utiliser en lecture ou en écriture.

LogDisplayName

Obtient le nom convivial du journal des événements.

MachineName

Obtient ou définit le nom de l'ordinateur à utiliser pour lire ou écrire les événements.

MaximumKilobytes

Obtient ou définit la taille maximale du journal des événements en kilo-octets.

MinimumRetentionDays

Indique la durée de conservation en jours des entrées du journal des événements.

OverflowAction

Obtient le comportement configuré pour le stockage des nouvelles entrées quand le journal des événements atteint sa taille de fichier maximale.

Site

Obtient ou définit le ISite de Component.

(Hérité de Component)
Source

Obtient ou définit le nom de la source à inscrire et à utiliser pendant l'écriture d'entrées dans le journal des événements.

SynchronizingObject

Obtient ou définit l’objet utilisé pour marshaler des appels du gestionnaire d’événements consécutifs à un événement EntryWritten de EventLog

Méthodes

BeginInit()

Commence l'initialisation d'un EventLog utilisé dans un formulaire ou par un autre composant. L'initialisation se produit au moment de l'exécution.

Clear()

Supprime toutes les entrées du journal des événements.

Close()

Ferme le journal des événements et libère les handles de lecture et d’écriture.

CreateEventSource(EventSourceCreationData)

Définit une source d'événements valide pour l'écriture de messages d'événements localisés, à l'aide des propriétés de configuration spécifiées pour la source d'événements et le journal des événements correspondant.

CreateEventSource(String, String)

Établit le nom de source spécifié comme étant une source d'événement valide pour enregistrer des entrées dans un journal sur l'ordinateur local. Cette méthode peut également créer un nouveau journal personnalisé sur l'ordinateur local.

CreateEventSource(String, String, String)
Obsolète.
Obsolète.
Obsolète.

Établit le nom de source spécifié comme étant une source d'événement valide pour enregistrer des entrées dans un journal sur l'ordinateur spécifié. Cette méthode peut également être utilisée pour créer un nouveau journal personnalisé sur l'ordinateur spécifié.

CreateObjRef(Type)

Crée un objet contenant toutes les informations appropriées requises pour générer un proxy permettant de communiquer avec un objet distant.

(Hérité de MarshalByRefObject)
Delete(String)

Supprime un journal des événements de l'ordinateur local.

Delete(String, String)

Supprime un journal des événements de l'ordinateur spécifié.

DeleteEventSource(String)

Supprime l'inscription de la source d'événements du journal des événements de l'ordinateur local.

DeleteEventSource(String, String)

Supprime l'inscription de la source d'événements de l'application sur l'ordinateur spécifié.

Dispose()

Libère toutes les ressources utilisées par Component.

(Hérité de Component)
Dispose(Boolean)

Libère les ressources non managées utilisées par le EventLog, et libère éventuellement les ressources managées.

EndInit()

Termine l'initialisation d'un EventLog utilisé dans un formulaire ou par un autre composant. L'initialisation se produit au moment de l'exécution.

Equals(Object)

Détermine si l'objet spécifié est égal à l'objet actuel.

(Hérité de Object)
Exists(String)

Détermine si le journal existe sur l'ordinateur local.

Exists(String, String)

Détermine si le journal existe sur l'ordinateur spécifié.

GetEventLogs()

Recherche tous les journaux des événements sur l'ordinateur local et crée un tableau des objets EventLog qui contiennent la liste.

GetEventLogs(String)

Recherche tous les journaux des événements sur l'ordinateur spécifié et crée un tableau des objets EventLog qui contiennent la liste.

GetHashCode()

Fait office de fonction de hachage par défaut.

(Hérité de Object)
GetLifetimeService()
Obsolète.

Récupère l'objet de service de durée de vie en cours qui contrôle la stratégie de durée de vie de cette instance.

(Hérité de MarshalByRefObject)
GetService(Type)

Retourne un objet qui représente un service fourni par Component ou par son Container.

(Hérité de Component)
GetType()

Obtient le Type de l'instance actuelle.

(Hérité de Object)
InitializeLifetimeService()
Obsolète.

Obtient un objet de service de durée de vie pour contrôler la stratégie de durée de vie de cette instance.

(Hérité de MarshalByRefObject)
LogNameFromSourceName(String, String)

Obtient le nom du journal dans lequel la source spécifiée est inscrite.

MemberwiseClone()

Crée une copie superficielle du Object actuel.

(Hérité de Object)
MemberwiseClone(Boolean)

Crée une copie superficielle de l'objet MarshalByRefObject actuel.

(Hérité de MarshalByRefObject)
ModifyOverflowPolicy(OverflowAction, Int32)

Modifie le comportement configuré pour l'écriture de nouvelles entrées quand le journal des événements atteint sa taille de fichier maximale.

RegisterDisplayName(String, Int64)

Spécifie le nom localisé du journal des événements qui est affiché sur l'Observateur d'événements du serveur.

SourceExists(String)

Détermine si une source d'événements est inscrite dans l'ordinateur local.

SourceExists(String, String)

Détermine si une source d'événements est inscrite dans un ordinateur spécifié.

ToString()

Retourne un String contenant le nom du Component, s’il en existe un. Cette méthode ne doit pas être remplacée.

(Hérité de Component)
WriteEntry(String)

Écrit une entrée de type information, avec le texte de message donné, dans le journal des événements.

WriteEntry(String, EventLogEntryType)

Écrit une entrée d'erreur, d'avertissement, d'information, d'audit des succès ou des échecs avec le texte de message donné, dans le journal des événements.

WriteEntry(String, EventLogEntryType, Int32)

Écrit une entrée avec le texte de message donné et l'identificateur d'événements défini par l'application, dans le journal des événements.

WriteEntry(String, EventLogEntryType, Int32, Int16)

Écrit une entrée avec le texte de message donné, l'identificateur de l'événement défini par l'application et la catégorie définie par l'application, dans le journal des événements.

WriteEntry(String, EventLogEntryType, Int32, Int16, Byte[])

Écrit une entrée avec le texte de message donné, l'identificateur de l'événement défini par l'application et la catégorie définie par l'application, dans le journal des événements, et ajoute des données binaires au message.

WriteEntry(String, String)

Écrit une entrée de type information, avec le texte de message donné, dans le journal des événements, à l'aide de la source d'événements inscrite spécifiée.

WriteEntry(String, String, EventLogEntryType)

Écrit une entrée d'erreur, d'avertissement, d'information, d'audit des succès ou des échecs avec le texte de message donné, dans le journal des événements, à l'aide de la source d'événements inscrite spécifiée.

WriteEntry(String, String, EventLogEntryType, Int32)

Écrit une entrée avec le texte de message donné et l'identificateur d'événements défini par l'application, dans le journal des événements, à l'aide de la source d'événements inscrite spécifiée.

WriteEntry(String, String, EventLogEntryType, Int32, Int16)

Écrit une entrée avec le texte de message donné, l'identificateur de l'événement défini par l'application et la catégorie définie par l'application, dans le journal des événements, à l'aide de la source d'événements inscrite spécifiée. L'Observateur d'événements peut utiliser category pour le filtrage des événements du journal.

WriteEntry(String, String, EventLogEntryType, Int32, Int16, Byte[])

Écrit une entrée avec le texte de message donné, l'identificateur de l'événement défini par l'application et la catégorie définie par l'application, dans le journal des événements (à l'aide de la source d'événements inscrite spécifiée), et ajoute des données binaires au message.

WriteEvent(EventInstance, Byte[], Object[])

Écrit une entrée dans un journal des événements avec les données d'événement, les chaînes de remplacement de message et les données binaires associées données.

WriteEvent(EventInstance, Object[])

Écrit une entrée localisée dans le journal des événements.

WriteEvent(String, EventInstance, Byte[], Object[])

Écrit une entrée dans un journal des événements avec les données d'événement, les chaînes de remplacement de message et les données binaires associées données et à l'aide de la source d'événement inscrite spécifiée.

WriteEvent(String, EventInstance, Object[])

Écrit une entrée dans un journal des événements avec les données d'événement et les chaînes de remplacement de message à l'aide de la source d'événement inscrite spécifiée.

Événements

Disposed

Se produit lorsque le composant est supprimé par un appel à la méthode Dispose().

(Hérité de Component)
EntryWritten

Se produit quand une entrée est écrite dans un journal des événements sur l'ordinateur local.

S’applique à

Voir aussi