Schreiben Sie in die Ereignisprotokollanwendung in C#

Luqman Khan 12 Oktober 2023
  1. Schreiben Sie in C# in die Ereignisprotokollanwendung
  2. Methoden zum Schreiben von Einträgen in die Ereignisprotokollanwendung in C#
Schreiben Sie in die Ereignisprotokollanwendung in C#

Das Windows-Ereignisprotokoll ist eine vollständige Aufzeichnung der vom Windows-Betriebssystem gespeicherten System-, Sicherheits- und Anwendungsbenachrichtigungen. Administratoren verwenden es, um Systemprobleme zu erkennen und zu diagnostizieren und vor zukünftigen Problemen zu warnen.

Schreiben Sie in C# in die Ereignisprotokollanwendung

Zuerst werden wir sehen, dass wir in das Ereignisprotokoll schreiben können. Zu diesem Zweck können wir den folgenden Code verwenden:

Syntax:

using (EventLog neweventLog = new EventLog("Application"))
{
    neweventLog.Source = "Application";
    neweventLog.WriteEntry("event Log message example", EventLogEntryType.Information, 102, 1);
}

Lassen Sie uns nun alle Teile der obigen Syntax erklären.

  1. EventLog: Das Windows-Ereignisprotokoll wird zum Protokollieren von Fehlern oder wichtigen Ereignissen Ihrer Anwendung verwendet, da Administratoren einfach darauf zugreifen können. Windows-Ereignisprotokolle können über eine ähnliche Konsole verwaltet werden.
  2. neweventLog.Source: In der obigen Ereignisquelle im Schlüssel eventlog enthält jedes Protokoll Unterschlüssel namens Ereignisquelle; Mit anderen Worten, der Name der Software, die das Ereignis protokolliert, wird als Ereignisquelle bezeichnet. Dies kann der Name der Anwendung oder der Name der Unterkomponente der Anwendung sein.

Methoden zum Schreiben von Einträgen in die Ereignisprotokollanwendung in C#

Zum Schreiben von Ereignisprotokolleinträgen können Sie die folgenden Methoden der EventLog-Klasse verwenden:

  1. Methode WriteEntry()
  2. Methode WriteEvent()

die WriteEntry()-Methode

WriteEntry() benötigt einen source Parameter in der statischen Methode. Die Quelle kann auch mit dem Konstruktor der Klasse EventLog zugewiesen werden.

Der erste ist der Protokollname, dann werden der lokale Computer und der Name der Ereignisquelle im Konstruktor definiert.

Es gibt drei Ereignisprotokolleinträge, die wie folgt geschrieben werden:

  1. message: Dies ist der erste Parameter der Methode WriteEntry().
  2. EventLogEntryType: Mit EventLogEntryType können Sie den Ereignisprotokolleintrag definieren. Je nach Typ gibt es in der Ereignisanzeige unterschiedliche Symbole: Information, Warnung, Fehler für Auditing SuecessAudit und FailureAudit.
  3. Ereignis-ID: Wir können eine anwendungsspezifische Ereignis-ID angeben, die die Anwendung verwenden kann. Wir können auch anwendungsspezifische Binärdaten und eine Kategorie zusätzlich übergeben.

Sie müssen zum Schreiben nicht immer eine neue Ereignisquelle erstellen. Sie können es mit einem vorhandenen mit demselben Namen wie das Ereignisprotokoll schreiben.

Sehen wir uns an, wie wir programmgesteuert mit dem Windows-Ereignisprotokoll in C# arbeiten können. Wir können eine Quelle im folgenden Code erstellen, wenn sie nicht vorhanden ist.

Beispielcode:

private string CreateEventSource(string mynewAppName) {
  string eventSource = mynewAppName;
  bool sourceExists;
  try {
    sourceExists = EventLog.SourceExists(eventSource);
    if (!sourceExists) {
      EventLog.CreateEventSource(eventSource, "Application");
    }
  } catch (SecurityException) {
    eventSource = "Application";
  }

  return eventSource;
}

Lassen Sie uns nun die Teile des obigen Beispielcodes erläutern.

  1. sourceExists: Bei dieser Suche wirft die Quelle nur dann eine Sicherheitsausnahme, wenn sie nicht existiert.
  2. mynewAppName: Sie können die Quelle mit mynewAppName aufrufen.

Im Fehlerfall benötigt der Benutzer aus Sicherheitsgründen Administratorrechte. Es ist ziemlich einfach; Sie müssen nur die .NET-Framework-Klasse System.Diagnostics.EventLog verwenden.

Zuerst erstellen wir eine Instanz der Klasse System.Diagnostics.EventLog in der Methode WriteEntry(). Dann prüfen wir mit der Methode EventLog.SourceExists, ob die Ereignisquelle system existiert.

Wir werden es unter dem System EventLog erstellen, wenn es nicht existiert. Unsere protokollierten Ereignisse werden unter dem Systemereignisprotokoll angezeigt, und die Ereignisquelle zeigt system an.

Beispielcode:

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace neweventlogg {
  internal class Program {
    static void Main(string[] args) {
      using (EventLog neweventLog = new EventLog("Application")) {
        neweventLog.Source = "Application";
        neweventLog.WriteEntry("event Log message example", EventLogEntryType.Information, 102, 1);
      }
    }
  }
}

Im obigen Code wird eine Klassenprotokollierung erstellt; dann wird das EventLog gemacht. Wenn das EventLog bereits vorhanden ist, wird die Zeichenfolgenmeldung gespeichert; Andernfalls wird eine neue Ereignisquelle erstellt.

Durch die Verwendung der Methoden WriteEvent() und WriteEntry() können wir Ereignisse in ein Ereignisprotokoll schreiben. In einigen Fällen benötigen Sie jedoch aus Sicherheitsgründen eine spezielle Berechtigung zum Schreiben in eine Ereignisprotokollanwendung.

Verwandter Artikel - Csharp Event