Scrivere voci in un registro eventi usando Visual C++

Questo articolo descrive come aggiungere voci personalizzate al registro eventi del sistema operativo usando Microsoft .NET Framework.

Versione originale del prodotto: Visual C++
Numero KB originale: 815661

Requisiti

Visual Studio .NET

Scrivere voci in un registro eventi

La registrazione eventi offre alle applicazioni un modo standardizzato e centralizzato per registrare importanti eventi software e hardware. Windows fornisce un'interfaccia utente standard per la visualizzazione dei log: il Visualizzatore eventi. Usando il componente EventLog di runtime del linguaggio comune, è possibile connettersi facilmente ai log eventi esistenti, sia nei computer locali che remoti, e scrivere voci in questi log. È anche possibile leggere le voci dai log esistenti e creare log eventi personalizzati. Nel formato più semplice, la scrittura in un registro eventi prevede diversi passaggi per creare un'applicazione di esempio.

Per effettuare questa operazione, seguire questi passaggi:

  1. Avviare Visual Studio .NET.

  2. Creare un nuovo progetto di applicazione C++ gestito di Visual C++.

  3. Aggiungere un riferimento a system.dll aggiungendo la riga seguente al codice:

    #using <system.dll>
    
  4. Usare la using direttiva per gli System spazi dei nomi e System::Diagnostics in modo che non sia necessario qualificare le dichiarazioni da questi spazi dei nomi più avanti nel codice. È possibile usare le istruzioni seguenti prima di qualsiasi altra dichiarazione:

    using namespace System;
    using namespace System::Diagnostics;
    
  5. Per scrivere in un registro eventi, è necessario disporre di diverse informazioni:

    • Il messaggio
    • Nome del log in cui si vuole scrivere (viene creato se non esiste già)
    • Stringa che rappresenta l'origine dell'evento

    È possibile registrare un'origine specifica con un solo registro eventi. Se si desidera scrivere messaggi in più log, è necessario definire più origini.

    String^ sSource;
    String^ sLog;
    String^ sEvent;
    
    sSource = gcnew String("dotNET Sample App1");
    sLog = gcnew String("Application1");
    sEvent = gcnew String("Sample Event1");
    
  6. Usare due metodi statici della EventLog classe per verificare se l'origine esiste e, se l'origine non esiste, per creare questa origine associata a un log eventi specifico. Se il nome del log specificato non esiste, il nome viene creato automaticamente quando si scrive la prima voce nel log. Per impostazione predefinita, se non si specifica un nome di log per il CreateEventSource metodo , il file di log è denominato Log applicazioni.

    if(!EventLog::SourceExists(sSource)) EventLog::CreateEventSource(sSource,sLog);
    
  7. Per scrivere un messaggio in un registro eventi, è possibile usare il metodo EventLog.WriteEntrystatico . Questo metodo ha diverse versioni di overload. Il codice di esempio seguente mostra il metodo più semplice (che accetta una stringa di origine e il messaggio) e uno dei metodi più complessi (che supporta la specifica dell'ID evento e del tipo di evento):

    EventLog::WriteEntry(sSource,sEvent);
    EventLog::WriteEntry(sSource, sEvent, EventLogEntryType::Warning, 235);
    
  8. Salvare l'applicazione. Eseguire l'applicazione e quindi controllare l'accesso dell'applicazione nel Visualizzatore eventi per visualizzare i nuovi eventi.

Elenco di codice completo in Visual C++ .NET

#include <tchar.h>
#using <system.dll>
#using <mscorlib.dll>

using namespace System;
using namespace System::Diagnostics;

int _tmain()
{
    String^ sSource;
    String^ sLog;
    String^ sEvent;

    sSource = gcnew String("dotNET Sample App1");
    sLog = gcnew String("Application1");
    sEvent = gcnew String("Sample Event1");

     if(!EventLog::SourceExists(sSource))
       EventLog::CreateEventSource(sSource,sLog);

    EventLog::WriteEntry(sSource,sEvent);
    EventLog::WriteEntry(sSource, sEvent,
    EventLogEntryType::Warning, 234);
    return 0;
}