Condividi tramite


EventLog Classe

Definizione

Fornisce l'interazione con i registri eventi di 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
Ereditarietà
Implementazioni

Esempio

L'esempio seguente crea l'origine MySource evento, se non esiste già, e scrive una voce nel registro eventi MyNewLog.

Annotazioni

È necessario eseguire questa applicazione come amministratore.

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

Commenti

EventLog consente di accedere o personalizzare i registri eventi di Windows, che registrano informazioni su eventi hardware o software importanti. Usando EventLog, è possibile leggere dai log esistenti, scrivere voci nei log, creare o eliminare origini eventi, eliminare i log e rispondere alle voci di log. È anche possibile creare nuovi log durante la creazione di un'origine evento.

Importante

Questo tipo implementa l'interfaccia IDisposable . Al termine dell'uso del tipo, è necessario eliminarlo direttamente o indirettamente. Per eliminare direttamente il tipo, chiamare il Dispose relativo metodo in un try/catch blocco. Per eliminarlo indirettamente, usare un costrutto del linguaggio, ad using esempio (in C#) o Using (in Visual Basic). Per altre informazioni, vedere la sezione "Uso di un oggetto che implementa IDisposable" nell'argomento relativo all'interfaccia IDisposable .

Oltre a fornire l'accesso ai singoli registri eventi e alle relative voci, la EventLog classe consente di accedere alla raccolta di tutti i log eventi. È possibile utilizzare i static membri di EventLog per eliminare i log, ottenere elenchi di log, creare o eliminare un'origine oppure determinare se un computer contiene già una determinata origine.

Sono disponibili tre registri eventi predefiniti: Applicazione, Sistema e Sicurezza. Un log di sicurezza è di sola lettura. Altre applicazioni e servizi installati, ad esempio Active Directory, potrebbero avere registri eventi aggiuntivi.

Quando si usa la EventLog classe , è necessario tenere presenti considerazioni sulla sicurezza. EventLog richiede EventLogPermission autorizzazioni per azioni specifiche. È consigliabile EventLogPermission non essere concesso a codice parzialmente attendibile. Non è mai consigliabile passare alcun oggetto del registro eventi, inclusi EventLogEntryCollection gli oggetti e EventLogEntry , a codice meno attendibile. Ad esempio, la creazione di un EventLog oggetto, la scrittura di una voce e il passaggio dell'oggetto a codice parzialmente attendibile possono creare un problema di sicurezza, perché la possibilità di leggere e scrivere nel registro eventi consente al codice di eseguire azioni come l'emissione EventLog di messaggi del registro eventi nel nome di un'altra applicazione.

A partire da Windows Vista, Controllo account utente determina le credenziali di un utente. Se si è membri del gruppo Administrators predefinito, vengono assegnati due token di accesso in fase di esecuzione: un token di accesso utente standard e un token di accesso amministratore. Per impostazione predefinita, si è nel ruolo utente standard. Per eseguire il codice che accede al log di sicurezza, è necessario innanzitutto elevare le credenziali dall'utente standard all'amministratore. È possibile farlo quando si avvia un'applicazione aprendo il menu di scelta rapida per l'applicazione (se si usa un mouse, fare clic con il pulsante destro del mouse sull'icona dell'applicazione) e indicando che si vuole eseguire come amministratore.

È possibile usare EventLog per creare registri eventi personalizzati che è possibile visualizzare tramite il Visualizzatore eventi del server. Usare il RegisterDisplayName metodo per visualizzare un nome localizzato per il registro eventi nel Visualizzatore eventi. Usare il ModifyOverflowPolicy metodo per configurare il comportamento del registro eventi quando raggiunge le dimensioni massime del log.

Per leggere da un registro eventi, specificare il nome del log (Log proprietà) e il nome del computer server (MachineName proprietà per il registro eventi. Se non si specifica il nome del computer server, si presuppone che il computer locale, ".". Non è necessario specificare l'origine evento (Source proprietà ), perché un'origine è necessaria solo per la scrittura nei log. La Entries proprietà viene popolata automaticamente con l'elenco di voci del registro eventi.

Per scrivere in un registro eventi, specificare o creare un'origine evento (Source proprietà). Per creare una nuova origine evento, è necessario disporre di credenziali amministrative nel computer. L'origine evento registra l'applicazione con il registro eventi come origine valida delle voci. È possibile usare l'origine evento per scrivere in un solo log alla volta. La Source proprietà può essere qualsiasi stringa casuale, ma il nome deve essere distinto da altre origini nel computer. L'origine evento è in genere il nome dell'applicazione o un'altra stringa di identificazione. Il tentativo di creare un valore duplicato Source genera un'eccezione. Tuttavia, un singolo registro eventi può essere associato a più origini.

Se l'origine evento per il registro eventi associato all'istanza EventLog non esiste, viene creata una nuova origine evento. Per creare un'origine evento in Windows Vista e versioni successive o Windows Server 2003, è necessario disporre di credenziali amministrative.

Questo requisito è dovuto al fatto che tutti i registri eventi, inclusi i log di sicurezza, devono essere cercati per determinare se l'origine evento è univoca. A partire da Windows Vista, gli utenti non hanno l'autorizzazione per accedere al log di sicurezza; pertanto, viene generata un'eccezione SecurityException .

Importante

La creazione o l'eliminazione di un'origine evento richiede la sincronizzazione del codice sottostante usando un mutex denominato. Se un'applicazione con privilegi elevati blocca il mutex denominato, il tentativo di creare o eliminare un'origine evento causa l'interruzione della risposta dell'applicazione fino al rilascio del blocco. Per evitare questo problema, non concedere UnmanagedCode mai l'autorizzazione al codice non attendibile. Inoltre, UnmanagedCode l'autorizzazione consente potenzialmente di ignorare altre autorizzazioni e deve essere concessa solo al codice altamente attendibile.

Le applicazioni e i servizi devono scrivere nel log applicazioni o in un log personalizzato. I driver di dispositivo devono scrivere nel log di sistema. Se la proprietà non viene impostata Log in modo esplicito, per impostazione predefinita il registro eventi viene impostato sul registro applicazioni.

Annotazioni

Non esiste nulla per proteggere un'applicazione dalla scrittura come origine registrata. Se a un'applicazione viene concessa Write l'autorizzazione, può scrivere eventi per qualsiasi origine valida registrata nel computer.

Utilizzare i WriteEvent metodi e WriteEntry per scrivere eventi in un registro eventi. È necessario specificare un'origine evento per scrivere eventi; è necessario creare e configurare l'origine evento prima di scrivere la prima voce con l'origine.

Creare la nuova origine evento durante l'installazione dell'applicazione. Ciò consente al sistema operativo di aggiornare l'elenco delle origini eventi registrate e la relativa configurazione. Se il sistema operativo non ha aggiornato l'elenco delle origini eventi e si tenta di scrivere un evento con la nuova origine, l'operazione di scrittura avrà esito negativo. È possibile configurare una nuova origine usando un EventLogInstaller oggetto o il CreateEventSource metodo . Per creare una nuova origine evento, è necessario disporre di credenziali amministrative nel computer.

Ogni origine può scrivere in un solo registro eventi alla volta; Tuttavia, l'applicazione può usare più origini per scrivere in più registri eventi. Ad esempio, l'applicazione potrebbe richiedere più origini configurate per registri eventi diversi o file di risorse diversi. Per modificare i dettagli di configurazione di un'origine esistente, è necessario eliminare l'origine e quindi crearla con la nuova configurazione. Se altre applicazioni o componenti usano l'origine esistente, creare una nuova origine con la configurazione aggiornata anziché eliminare l'origine esistente.

È possibile registrare l'origine evento con risorse localizzate per la categoria di eventi e le stringhe di messaggio. L'applicazione può scrivere voci del registro eventi usando identificatori di risorsa anziché specificare i valori stringa effettivi. Per altre informazioni sulla configurazione dell'origine con i file di risorse, vedere le EventLogInstaller classi e EventSourceCreationData .

Se l'applicazione scrive i valori stringa direttamente nel registro eventi, non è necessario impostare le proprietà del file di risorse per l'origine. L'origine deve essere configurata per la scrittura di voci localizzate o per la scrittura di stringhe dirette. Se l'applicazione scrive voci usando sia identificatori di risorsa che valori stringa, è necessario registrare due origini separate. Ad esempio, configurare un'origine con i file di risorse e quindi usare tale origine nel WriteEvent metodo per scrivere voci usando gli identificatori di risorsa nel registro eventi. Creare quindi un'origine diversa senza file di risorse e usare tale origine nel WriteEntry metodo per scrivere stringhe direttamente nel registro eventi usando tale origine.

Quando si scrivono eventi, è necessario specificare almeno una stringa di messaggio o l'identificatore di risorsa per una stringa di messaggio. Altre proprietà dell'evento sono facoltative. Di seguito sono riportati alcuni esempi di impostazioni di evento facoltative:

  • È possibile impostare per EventLogEntryType specificare l'icona visualizzata dal Visualizzatore eventi per la voce.

  • È possibile specificare un identificatore di categoria per l'evento, se l'applicazione usa categorie per filtrare gli eventi.

  • È possibile collegare dati binari alla voce di evento se si desidera associare informazioni aggiuntive a un determinato evento.

Importante

La registrazione eventi utilizza spazio su disco, tempo processore e altre risorse di sistema. È importante registrare solo le informazioni essenziali. È consigliabile inserire chiamate del registro eventi in un percorso di errore, anziché nel percorso del codice principale, in modo che non influiscano negativamente sulle prestazioni.

Per un elenco dei valori iniziali delle proprietà per un'istanza di EventLog, vedere il costruttore EventLog.

Costruttori

Nome Descrizione
EventLog()

Inizializza una nuova istanza della classe EventLog. Non associa l'istanza ad alcun log.

EventLog(String, String, String)

Inizializza una nuova istanza della classe EventLog. Associa l'istanza a un log nel computer specificato e crea o assegna l'origine specificata all'oggetto EventLog.

EventLog(String, String)

Inizializza una nuova istanza della classe EventLog. Associa l'istanza a un log nel computer specificato.

EventLog(String)

Inizializza una nuova istanza della classe EventLog. Associa l'istanza a un accesso nel computer locale.

Proprietà

Nome Descrizione
CanRaiseEvents

Ottiene un valore che indica se il componente può generare un evento.

(Ereditato da Component)
Container

Ottiene l'oggetto IContainer contenente l'oggetto Component.

(Ereditato da Component)
DesignMode

Ottiene un valore che indica se è Component attualmente in modalità progettazione.

(Ereditato da Component)
EnableRaisingEvents

Ottiene o imposta un valore che indica se riceve EventLogEntryWritten le notifiche degli eventi.

Entries

Ottiene il contenuto del registro eventi.

Events

Ottiene l'elenco dei gestori eventi associati a questo Componentoggetto .

(Ereditato da Component)
Log

Ottiene o imposta il nome del log in cui leggere o scrivere.

LogDisplayName

Ottiene il nome descrittivo del registro eventi.

MachineName

Ottiene o imposta il nome del computer in cui leggere o scrivere eventi.

MaximumKilobytes

Ottiene o imposta la dimensione massima del registro eventi in kilobyte.

MinimumRetentionDays

Questa proprietà è deprecata.

OverflowAction

Ottiene il comportamento configurato per l'archiviazione di nuove voci quando il registro eventi raggiunge le dimensioni massime del file di log.

Site

Ottiene o imposta l'oggetto ISite dell'oggetto Component.

(Ereditato da Component)
Source

Ottiene o imposta il nome dell'origine da registrare e utilizzare durante la scrittura nel registro eventi.

SynchronizingObject

Ottiene o imposta l'oggetto utilizzato per effettuare il marshalling delle chiamate del gestore eventi rilasciate come risultato di un evento scritto da una EventLog voce.

Metodi

Nome Descrizione
BeginInit()

Avvia l'inizializzazione di un EventLog oggetto utilizzato in una maschera o utilizzato da un altro componente. L'inizializzazione viene eseguita in fase di esecuzione.

Clear()

Rimuove tutte le voci dal registro eventi.

Close()

Chiude il registro eventi e rilascia handle di lettura e scrittura.

CreateEventSource(EventSourceCreationData)

Stabilisce un'origine evento valida per la scrittura di messaggi di evento localizzati, utilizzando le proprietà di configurazione specificate per l'origine evento e il registro eventi corrispondente.

CreateEventSource(String, String, String)
Obsoleti.
Obsoleti.
Obsoleti.

Stabilisce il nome di origine specificato come origine evento valida per la scrittura di voci in un log nel computer specificato. Questo metodo può essere usato anche per creare un nuovo log personalizzato nel computer specificato.

CreateEventSource(String, String)

Stabilisce il nome di origine specificato come origine evento valida per la scrittura di voci in un log nel computer locale. Questo metodo può anche creare un nuovo log personalizzato nel computer locale.

CreateObjRef(Type)

Crea un oggetto che contiene tutte le informazioni pertinenti necessarie per generare un proxy utilizzato per comunicare con un oggetto remoto.

(Ereditato da MarshalByRefObject)
Delete(String, String)

Rimuove un registro eventi dal computer specificato.

Delete(String)

Rimuove un registro eventi dal computer locale.

DeleteEventSource(String, String)

Rimuove la registrazione dell'origine evento dell'applicazione dal computer specificato.

DeleteEventSource(String)

Rimuove la registrazione dell'origine evento dal registro eventi del computer locale.

Dispose()

Rilascia tutte le risorse usate da Component.

(Ereditato da Component)
Dispose(Boolean)

Rilascia le risorse non gestite usate da EventLoge, facoltativamente, rilascia le risorse gestite.

EndInit()

Termina l'inizializzazione di un EventLog oggetto utilizzato in una maschera o da un altro componente. L'inizializzazione viene eseguita in fase di esecuzione.

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
Exists(String, String)

Determina se il log esiste nel computer specificato.

Exists(String)

Determina se il log esiste nel computer locale.

GetEventLogs()

Cerca tutti i registri eventi nel computer locale e crea una matrice di EventLog oggetti che contengono l'elenco.

GetEventLogs(String)

Cerca tutti i registri eventi nel computer specificato e crea una matrice di EventLog oggetti che contengono l'elenco.

GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetLifetimeService()
Obsoleti.

Recupera l'oggetto servizio di durata corrente che controlla i criteri di durata per questa istanza.

(Ereditato da MarshalByRefObject)
GetService(Type)

Restituisce un oggetto che rappresenta un servizio fornito da Component o da Container.

(Ereditato da Component)
GetType()

Ottiene il Type dell'istanza corrente.

(Ereditato da Object)
InitializeLifetimeService()
Obsoleti.

Ottiene un oggetto servizio di durata per controllare i criteri di durata per questa istanza.

(Ereditato da MarshalByRefObject)
LogNameFromSourceName(String, String)

Ottiene il nome del log in cui è registrata l'origine specificata.

MemberwiseClone()

Crea una copia superficiale del Objectcorrente.

(Ereditato da Object)
MemberwiseClone(Boolean)

Crea una copia superficiale dell'oggetto corrente MarshalByRefObject .

(Ereditato da MarshalByRefObject)
ModifyOverflowPolicy(OverflowAction, Int32)

Modifica il comportamento configurato per la scrittura di nuove voci quando il registro eventi raggiunge le dimensioni massime del file.

RegisterDisplayName(String, Int64)

Specifica il nome localizzato del registro eventi, visualizzato nel Visualizzatore eventi del server.

SourceExists(String, String)

Determina se un'origine evento è registrata in un computer specificato.

SourceExists(String)

Determina se un'origine evento è registrata nel computer locale.

ToString()

Restituisce un oggetto String contenente il nome dell'oggetto Component, se presente. Questo metodo non deve essere sottoposto a override.

(Ereditato da Component)
WriteEntry(String, EventLogEntryType, Int32, Int16, Byte[])

Scrive una voce con il testo del messaggio specificato, l'identificatore di evento definito dall'applicazione e la categoria definita dall'applicazione nel registro eventi e aggiunge dati binari al messaggio.

WriteEntry(String, EventLogEntryType, Int32, Int16)

Scrive una voce con il testo del messaggio specificato, l'identificatore di evento definito dall'applicazione e la categoria definita dall'applicazione nel registro eventi.

WriteEntry(String, EventLogEntryType, Int32)

Scrive una voce con il testo del messaggio specificato e l'identificatore dell'evento definito dall'applicazione nel registro eventi.

WriteEntry(String, EventLogEntryType)

Scrive una voce di controllo di errore, avviso, informazioni, controllo riuscito o errore con il testo del messaggio specificato nel registro eventi.

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

Scrive una voce con il testo del messaggio specificato, l'identificatore di evento definito dall'applicazione e la categoria definita dall'applicazione nel registro eventi (usando l'origine evento registrata specificata) e accoda i dati binari al messaggio.

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

Scrive una voce con il testo del messaggio specificato, l'identificatore di evento definito dall'applicazione e la categoria definita dall'applicazione nel registro eventi, usando l'origine evento registrata specificata. Può category essere utilizzato dal Visualizzatore eventi per filtrare gli eventi nel log.

WriteEntry(String, String, EventLogEntryType, Int32)

Scrive una voce con il testo del messaggio specificato e l'identificatore dell'evento definito dall'applicazione nel registro eventi, usando l'origine evento registrata specificata.

WriteEntry(String, String, EventLogEntryType)

Scrive un errore, un avviso, informazioni, un controllo di esito positivo o una voce di controllo degli errori con il testo del messaggio specificato nel registro eventi, utilizzando l'origine evento registrata specificata.

WriteEntry(String, String)

Scrive una voce del tipo di informazioni con il testo del messaggio specificato nel registro eventi, utilizzando l'origine evento registrata specificata.

WriteEntry(String)

Scrive una voce del tipo di informazioni, con il testo del messaggio specificato, nel registro eventi.

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

Scrive una voce del registro eventi con i dati dell'evento, le stringhe di sostituzione dei messaggi e i dati binari associati.

WriteEvent(EventInstance, Object[])

Scrive una voce localizzata nel registro eventi.

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

Scrive una voce del registro eventi con i dati dell'evento, le stringhe di sostituzione dei messaggi e i dati binari associati e usando l'origine evento registrata specificata.

WriteEvent(String, EventInstance, Object[])

Scrive una voce del registro eventi con i dati dell'evento specificati e le stringhe di sostituzione del messaggio, usando l'origine evento registrata specificata.

Eventi

Nome Descrizione
Disposed

Si verifica quando il componente viene eliminato da una chiamata al Dispose() metodo .

(Ereditato da Component)
EntryWritten

Si verifica quando una voce viene scritta in un registro eventi nel computer locale.

Si applica a

Vedi anche