EventLog Classe

Definizione

Gestisce l'interazione con i log 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.

Nota

A partire da Windows Vista, è necessario eseguire questa applicazione come amministratore.

#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

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 da 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

Il tipo implementa l'interfaccia IDisposable. Dopo aver utilizzato il tipo, è necessario eliminarlo direttamente o indirettamente. Per eliminare direttamente il tipo, chiamare il metodo Dispose in un blocco try/catch. Per eliminarlo indirettamente, utilizzare un costrutto di linguaggio come ad esempio using 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 log eventi aggiuntivi.

Esistono considerazioni sulla sicurezza quando si usa la EventLog classe. EventLog richiede EventLogPermission autorizzazioni per azioni specifiche in .NET Framework 2.0 e versioni successive o attendibilità completa in .NET Framework 1.0 e 1.1. È consigliabile EventLogPermission non essere concesso al codice parzialmente attendibile. Non è mai necessario passare alcun oggetto del log eventi, inclusi EventLogEntryCollection e EventLogEntry oggetti, a codice meno attendibile. Ad esempio, la creazione di un oggetto, la scrittura di una voce e il passaggio dell'oggetto al codice parzialmente attendibile può creare un EventLog 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. Ai membri del gruppo Administrators predefinito vengono assegnati due token di accesso in fase di esecuzione, ovvero un token di accesso utente standard e un token di accesso amministratore. Per impostazione predefinita, viene assegnato il ruolo dell'utente standard. Per eseguire il codice che accede al log di sicurezza, è prima necessario elevare le credenziali dall'utente standard all'amministratore. È possibile eseguire questa operazione 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 log 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 metodo per configurare il ModifyOverflowPolicy comportamento del registro eventi quando raggiunge le dimensioni massime del log.

Per leggere da un registro eventi, specificare il nome del log (proprietà) e il nome del computer server (LogMachineName 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é è necessaria un'origine 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à). È necessario disporre di credenziali amministrative nel computer per creare una nuova origine evento. L'origine eventi 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 log 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 delle credenziali amministrative.

Questo requisito è dovuto al fatto che tutti i log eventi, inclusi i log di sicurezza, devono essere cercati per determinare se l'origine evento è univoca. A partire da Windows Vista, gli utenti non dispongono dell'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'arresto 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 di ignorare altre autorizzazioni e deve essere concessa solo al codice altamente attendibile.

Le applicazioni e i servizi devono scrivere nel log dell'applicazione 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, il registro eventi viene predefinito nel log applicazioni.

Nota

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

Usare 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 di 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 . È necessario disporre di credenziali amministrative nel computer per creare una nuova origine evento.

Ogni origine può scrivere in un solo log eventi alla volta; Tuttavia, l'applicazione può usare più origini per scrivere in più log 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 eventi 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 di 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 con identificatori di risorsa e valori stringa, è necessario registrare due origini separate. Ad esempio, configurare un'origine WriteEvent con i file di risorse e quindi usare tale origine nel metodo per scrivere voci usando identificatori di risorsa nel registro eventi. Creare quindi un'origine diversa senza file di risorse e usare tale origine nel metodo per scrivere stringhe direttamente nel WriteEntry 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. Esempi di impostazioni di evento facoltative includono quanto segue:

  • È possibile impostare l'oggetto EventLogEntryType per specificare l'icona visualizzata dall'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 i dati binari alla voce dell'evento se si desidera associare informazioni aggiuntive a un determinato evento.

Importante

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

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

Costruttori

EventLog()

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

EventLog(String)

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

EventLog(String, String)

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

EventLog(String, String, String)

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

Proprietà

CanRaiseEvents

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

(Ereditato da Component)
Container

Ottiene l'oggetto IContainer che contiene Component.

(Ereditato da Component)
DesignMode

Ottiene un valore che indica se il Component si trova in modalità progettazione.

(Ereditato da Component)
EnableRaisingEvents

Ottiene o imposta un valore che indica se EventLog riceve notifiche dell'evento EntryWritten.

Entries

Ottiene il contenuto del registro eventi.

Events

Ottiene l'elenco dei gestori eventi allegati a questo Component.

(Ereditato da Component)
Log

Ottiene o imposta il nome del log da cui leggere o in cui 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 KB.

MinimumRetentionDays

Ottiene il numero di giorni per cui mantenere le voci nel registro eventi.

OverflowAction

Ottiene il comportamento configurato per l'archiviazione delle nuove voci quando il file di log raggiunge la dimensione massima.

Site

Ottiene o imposta l'oggetto ISite di Component.

(Ereditato da Component)
Source

Ottiene o imposta il nome dell'origine da registrare e usare quando si scrive nel registro eventi.

SynchronizingObject

Ottiene o imposta l'oggetto usato per effettuare il marshalling delle chiamate del gestore eventi generate in seguito a un evento scritto della voce EventLog.

Metodi

BeginInit()

Avvia l'inizializzazione di un oggetto EventLog usato in un form o da un altro componente. L'inizializzazione avviene in fase di esecuzione.

Clear()

Rimuove tutte le voci dal registro eventi.

Close()

Chiude il registro eventi e rende disponibili gli handle di lettura e scrittura.

CreateEventSource(EventSourceCreationData)

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

CreateEventSource(String, String)

Determina che il nome di origine specificato è un nome di eventi valido per la scrittura di voci in un log del computer locale. Questo metodo consente inoltre di creare un nuovo log personalizzato nel computer locale.

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

Determina che il nome di origine specificato è un nome di eventi valido per la scrittura di voci in un log del computer specificato. Questo metodo può essere usato anche per creare un nuovo log personalizzato nel computer specificato.

CreateObjRef(Type)

Consente di creare un oggetto che contiene tutte le informazioni rilevanti necessarie per la generazione del proxy utilizzato per effettuare la comunicazione con un oggetto remoto.

(Ereditato da MarshalByRefObject)
Delete(String)

Rimuove un registro eventi dal computer locale.

Delete(String, String)

Rimuove un registro eventi dal computer specificato.

DeleteEventSource(String)

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

DeleteEventSource(String, String)

Rimuove la registrazione dell'origine eventi di un'applicazione dal computer specificato.

Dispose()

Rilascia tutte le risorse usate da Component.

(Ereditato da Component)
Dispose(Boolean)

Rilascia le risorse non gestite usate dall'oggetto EventLog e, facoltativamente, le risorse gestite.

EndInit()

Termina l'inizializzazione di un oggetto EventLog usato in un form o da un altro componente. L'inizializzazione avviene in fase di esecuzione.

Equals(Object)

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

(Ereditato da Object)
Exists(String)

Determina se il log esiste nel computer locale.

Exists(String, String)

Determina se il log esiste nel computer specificato.

GetEventLogs()

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

GetEventLogs(String)

Esegue una ricerca di tutti i registri eventi in un dato computer e crea una matrice di oggetti EventLog che contengono l'elenco.

GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetLifetimeService()
Obsoleti.

Consente di recuperare l'oggetto servizio di durata corrente per controllare i criteri di durata per l'istanza.

(Ereditato da MarshalByRefObject)
GetService(Type)

Consente di restituire un oggetto che rappresenta un servizio fornito da Component o dal relativo Container.

(Ereditato da Component)
GetType()

Ottiene l'oggetto 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)

Restituisce il nome del registro in cui l'origine specificata è stata registrata.

MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
MemberwiseClone(Boolean)

Crea una copia dei riferimenti dell'oggetto MarshalByRefObject corrente.

(Ereditato da MarshalByRefObject)
ModifyOverflowPolicy(OverflowAction, Int32)

Modifica il comportamento configurato per la scrittura delle nuove voci quando il registro eventi raggiunge la dimensione massima.

RegisterDisplayName(String, Int64)

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

SourceExists(String)

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

SourceExists(String, String)

Determina se un'origine eventi è registrata nel computer specificato.

ToString()

Restituisce un oggetto String che contiene il nome dell'eventuale oggetto Component. Questo metodo non deve essere sottoposto a override.

(Ereditato da Component)
WriteEntry(String)

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

WriteEntry(String, EventLogEntryType)

Scrive nel registro eventi una voce relativa a errori, avvisi, informazioni, controlli riusciti o non riusciti, insieme al testo di un determinato messaggio.

WriteEntry(String, EventLogEntryType, Int32)

Scrive nel registro eventi una voce con il testo del messaggio indicato e con un identificatore eventi definito dall'applicazione.

WriteEntry(String, EventLogEntryType, Int32, Int16)

Scrive nel registro eventi una voce con il testo del messaggio indicato, insieme a un identificatore eventi definito dall'applicazione e a una categoria definita dall'applicazione.

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

Scrive nel registro eventi una voce con il testo del messaggio indicato, insieme a un identificatore eventi definito dall'applicazione e a una categoria definita dall'applicazione, e allega dati binari al messaggio.

WriteEntry(String, String)

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

WriteEntry(String, String, EventLogEntryType)

Scrive nel registro eventi una voce relativa a errori, errori, avvisi, informazioni, controlli riusciti o controlli non riusciti, insieme al testo di un determinato messaggio, usando l'origine eventi registrata specificata.

WriteEntry(String, String, EventLogEntryType, Int32)

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

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

Scrive nel registro eventi una voce con il testo del messaggio indicato, insieme a un identificatore eventi definito dall'applicazione e a una categoria definita dall'applicazione, usando l'origine eventi registrata specificata. Il parametro category può essere usato dal Visualizzatore eventi per filtrare gli eventi nel registro.

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

Scrive nel registro eventi una voce con il testo del messaggio indicato, insieme a un identificatore eventi definito dall'applicazione e a una categoria definita dall'applicazione, usando l'origine eventi registrata specificata, e allega dati binari al messaggio.

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

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

WriteEvent(EventInstance, Object[])

Scrive una voce localizzata nel registro eventi.

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

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

WriteEvent(String, EventInstance, Object[])

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

Eventi

Disposed

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

(Ereditato da Component)
EntryWritten

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

Si applica a

Vedi anche