Partager via


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 MyNewLogdes événements.

Note

Vous devez exécuter cette application en tant qu’administrateur.

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 ou de personnaliser les journaux des événements Windows, 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 de nouveaux journaux lors de la création d’une source d’événement.

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, appelez sa Dispose méthode dans un try/catch bloc. Pour la supprimer indirectement, utilisez une construction de langage telle que using (en C#) ou Using (en Visual Basic). Pour plus d’informations, consultez la section « Utilisation d’un objet implémentant IDisposable » dans la rubrique d’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 la suppression 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. Nous vous recommandons de EventLogPermission ne pas accorder de code partiellement approuvé. Vous ne devez jamais passer d’objet de journal des événements, y compris EventLogEntryCollection et EventLogEntry des objets, à du code moins approuvé. Par exemple, la création d’un EventLog objet, l’écriture d’une entrée, puis le passage de l’objet EventLog à du code partiellement approuvé peut 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 du journal des événements dans le 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, vous disposez de deux jetons d’accès au moment de l’exécution : 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 de l’utilisateur standard à l’administrateur. Pour ce faire, lorsque vous démarrez une application, ouvrez le menu contextuel de l’application (si vous utilisez une souris, cliquez avec le bouton droit sur l’icône de l’application) et indiquez 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 l’Observateur d’événements du serveur. Utilisez la RegisterDisplayName méthode pour afficher un nom localisé pour votre journal des événements dans l’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 , « ». Il n’est pas nécessaire de spécifier la source d’événement (Source propriété), car une source n’est requise que pour l’écriture dans les journaux. La Entries propriété est automatiquement renseignée 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 administratives sur l’ordinateur pour créer une source d’événement. La source d’événement inscrit votre application auprès du journal des événements comme 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 d’autres sources sur l’ordinateur. La source d’événement est généralement le nom de l’application ou d’une autre chaîne d’identification. La tentative de création d’une valeur en double Source lève une exception. Toutefois, un journal des événements unique peut être associé à plusieurs sources.

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

Cette exigence est due au fait que tous les journaux d’événements, y compris les journaux de sécurité, doivent être recherchés pour déterminer si la source d’é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, une SecurityException est levée.

Important

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

Les applications et 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.

Note

Il n’y a rien à protéger une application contre l’écriture 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 méthodes et WriteEntry les WriteEvent méthodes 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 pendant l’installation de votre application. Cela permet au système d’exploitation d’actualiser sa liste de sources d’événements inscrites et de 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 administratives 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énements et les 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. Pour plus d’informations sur la configuration de votre source avec des fichiers de ressources, consultez les EventLogInstaller classes et EventSourceCreationData les classes.

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 des identificateurs de ressource et des 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 l’icône EventLogEntryType pour spécifier l’icône affichée par l’Observateur d’événements 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 des appels de journal des événements dans un chemin d’erreur, plutôt que dans le chemin de code principal, afin qu’ils n’affectent pas les performances.

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

Constructeurs

Nom Description
EventLog()

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

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 affecte la source spécifiée au EventLogfichier .

EventLog(String, String)

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

EventLog(String)

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

Propriétés

Nom Description
CanRaiseEvents

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

(Hérité de Component)
Container

Obtient le IContainer fichier qui contient le Component.

(Hérité de Component)
DesignMode

Obtient une valeur qui indique si la Component valeur est actuellement en mode création.

(Hérité de Component)
EnableRaisingEvents

Obtient ou définit une valeur indiquant si les EventLog notifications d’événement reçoivent.EntryWritten

Entries

Obtient le contenu du journal des événements.

Events

Obtient la liste des gestionnaires d’événements qui sont attachés à ce Component.

(Hérité de Component)
Log

Obtient ou définit le nom du journal à lire ou à écrire.

LogDisplayName

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

MachineName

Obtient ou définit le nom de l’ordinateur sur lequel lire ou écrire des événements.

MaximumKilobytes

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

MinimumRetentionDays

Cette propriété est déconseillée.

OverflowAction

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

Site

Obtient ou définit le ISiteComponent.

(Hérité de Component)
Source

Obtient ou définit le nom de la source à inscrire et à utiliser lors de l’écriture dans le journal des événements.

SynchronizingObject

Obtient ou définit l’objet utilisé pour marshaler les appels du gestionnaire d’événements émis à la suite d’un EventLog événement écrit d’entrée.

Méthodes

Nom Description
BeginInit()

Commence l’initialisation d’un EventLog formulaire ou utilisé 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)

Établit une source d’événement valide pour écrire des messages d’événements localisés, à l’aide des propriétés de configuration spécifiées pour la source d’événement et le journal des événements correspondants.

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

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

CreateEventSource(String, String)

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

CreateObjRef(Type)

Crée un objet qui contient toutes les informations pertinentes requises pour générer un proxy utilisé pour communiquer avec un objet distant.

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

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

Delete(String)

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

DeleteEventSource(String, String)

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

DeleteEventSource(String)

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

Dispose()

Libère toutes les ressources utilisées par le 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 formulaire ou d’un autre composant utilisé. 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, String)

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

Exists(String)

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

GetEventLogs()

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

GetEventLogs(String)

Recherche tous les journaux d’événements sur l’ordinateur donné et crée un tableau d’objets EventLog qui contiennent la liste.

GetHashCode()

Sert 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 actuel 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 le Component ou par son Container.

(Hérité de Component)
GetType()

Obtient la 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 auquel la source spécifiée est inscrite.

MemberwiseClone()

Crée une copie superficielle du Objectactuel.

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

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

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

Modifie le comportement configuré pour écrire de nouvelles entrées lorsque 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 s’affiche dans l’Observateur d’événements du serveur.

SourceExists(String, String)

Détermine si une source d’événement est inscrite sur un ordinateur spécifié.

SourceExists(String)

Détermine si une source d’événement est inscrite sur l’ordinateur local.

ToString()

Retourne un String nom contenant le nom du Component, le cas échéant. Cette méthode ne doit pas être remplacée.

(Hérité de Component)
WriteEntry(String, EventLogEntryType, Int32, Int16, Byte[])

Écrit une entrée avec le texte du message donné, l’identificateur d’é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, EventLogEntryType, Int32, Int16)

Écrit une entrée avec le texte du message donné, l’identificateur d’é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)

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

WriteEntry(String, EventLogEntryType)

Écrit une erreur, un avertissement, des informations, un audit de réussite ou une entrée d’audit d’échec avec le texte du message donné dans le journal des événements.

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

Écrit une entrée avec le texte du message, l’identificateur d’é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énement inscrite spécifiée) et ajoute des données binaires au message.

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

Écrit une entrée avec le texte du message, l’identificateur d’é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énement inscrite spécifiée. Vous category pouvez l’utiliser par l’Observateur d’événements pour filtrer les événements dans le journal.

WriteEntry(String, String, EventLogEntryType, Int32)

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

WriteEntry(String, String, EventLogEntryType)

Écrit une erreur, un avertissement, des informations, un audit de réussite ou une entrée d’audit d’échec avec le texte du message donné dans le journal des événements, à l’aide de la source d’événement inscrite spécifiée.

WriteEntry(String, String)

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

WriteEntry(String)

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

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

Écrit une entrée de 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.

WriteEvent(EventInstance, Object[])

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

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

Écrit une entrée de 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, et à l’aide de la source d’événement inscrite spécifiée.

WriteEvent(String, EventInstance, Object[])

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

Événements

Nom Description
Disposed

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

(Hérité de Component)
EntryWritten

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

S’applique à

Voir aussi