Schreiben von Einträgen in ein Ereignisprotokoll mithilfe von Visual C++
In diesem Artikel wird beschrieben, wie Sie dem Ereignisprotokoll des Betriebssystems mithilfe des Microsoft-.NET Framework eigene Einträge hinzufügen.
Ursprüngliche Produktversion: Visual C++
Ursprüngliche KB-Nummer: 815661
Anforderungen
Visual Studio .NET
Schreiben von Einträgen in ein Ereignisprotokoll
Die Ereignisprotokollierung bietet eine zentralisierte Standardmethode für Ihre Anwendungen, um wichtige Software- und Hardwareereignisse aufzuzeichnen. Windows stellt eine Standardbenutzeroberfläche zum Anzeigen der Protokolle bereit: die Ereignisanzeige. Mithilfe der Common Language Runtime EventLog-Komponente können Sie problemlos auf lokalen und Remotecomputern eine Verbindung mit vorhandenen Ereignisprotokollen herstellen und Einträge in diese Protokolle schreiben. Sie können auch Einträge aus vorhandenen Protokollen lesen und eigene benutzerdefinierte Ereignisprotokolle erstellen. In seiner einfachsten Form umfasst das Schreiben in ein Ereignisprotokoll mehrere Schritte zum Erstellen einer Beispielanwendung.
Gehen Sie dazu wie folgt vor:
Starten Sie Visual Studio .NET.
Erstellen Sie ein neues Visual C++-Projekt für eine verwaltete C++-Anwendung.
Fügen Sie einen Verweis auf system.dll hinzu, indem Sie dem Code die folgende Zeile hinzufügen:
#using <system.dll>
Verwenden Sie die
using
-Anweisung für dieSystem
Namespaces undSystem::Diagnostics
, damit Sie Deklarationen aus diesen Namespaces später in Ihrem Code nicht qualifizieren müssen. Sie können die folgenden Anweisungen vor allen anderen Deklarationen verwenden:using namespace System; using namespace System::Diagnostics;
Um in ein Ereignisprotokoll schreiben zu können, benötigen Sie mehrere Informationen:
- Ihre Nachricht
- Der Name des Protokolls, in den Sie schreiben möchten (es wird erstellt, wenn es noch nicht vorhanden ist)
- Eine Zeichenfolge, die die Quelle des Ereignisses darstellt.
Sie können eine bestimmte Quelle nur mit einem einzelnen Ereignisprotokoll registrieren. Wenn Sie Nachrichten in mehrere Protokolle schreiben möchten, müssen Sie mehrere Quellen definieren.
String^ sSource; String^ sLog; String^ sEvent; sSource = gcnew String("dotNET Sample App1"); sLog = gcnew String("Application1"); sEvent = gcnew String("Sample Event1");
Verwenden Sie zwei statische Methoden der
EventLog
-Klasse, um zu überprüfen, ob Ihre Quelle vorhanden ist, und wenn die Quelle nicht vorhanden ist, um diese Quelle zu erstellen, die einem bestimmten Ereignisprotokoll zugeordnet ist. Wenn der von Ihnen angegebene Protokollname nicht vorhanden ist, wird der Name automatisch erstellt, wenn Sie Ihren ersten Eintrag in das Protokoll schreiben. Wenn Sie keinen Protokollnamen für dieCreateEventSource
Methode angeben, heißt die Protokolldatei standardmäßig Anwendungsprotokoll.if(!EventLog::SourceExists(sSource)) EventLog::CreateEventSource(sSource,sLog);
Um eine Nachricht in ein Ereignisprotokoll zu schreiben, können Sie die statische Methode
EventLog.WriteEntry
verwenden. Diese Methode verfügt über mehrere verschiedene überladene Versionen. Der folgende Beispielcode zeigt die einfachste Methode (die eine Quellzeichenfolge und Ihre Nachricht akzeptiert) und eine der komplexeren Methoden (die das Angeben der Ereignis-ID und des Ereignistyps unterstützt):EventLog::WriteEntry(sSource,sEvent); EventLog::WriteEntry(sSource, sEvent, EventLogEntryType::Warning, 235);
Speichern Sie Ihre Anwendung. Führen Sie Ihre Anwendung aus, und überprüfen Sie dann, ob sich die Anwendung im Ereignisanzeige anmeldet, um Ihre neuen Ereignisse anzuzeigen.
Vollständige Codeauflistung 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;
}
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für