Dieser Artikel wurde manuell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen.
Übersetzung
Original
Dieser Artikel wurde noch nicht bewertet - Dieses Thema bewerten.

EventSourceCreationData-Klasse

Stellt die Konfigurationseinstellungen dar, mit denen eine Ereignisprotokollquelle auf dem lokalen oder einem Remotecomputer erstellt wird.

System.Object
  System.Diagnostics.EventSourceCreationData

Namespace:  System.Diagnostics
Assembly:  System (in System.dll)
public class EventSourceCreationData

Der EventSourceCreationData-Typ macht die folgenden Member verfügbar.

  Name Beschreibung
Öffentliche Methode EventSourceCreationData Initialisiert eine neue Instanz der EventSourceCreationData-Klasse mit einer angegebenen Ereignisquelle und einem angegebenen Ereignisprotokollnamen.
Zum Seitenanfang
  Name Beschreibung
Öffentliche Eigenschaft CategoryCount Ruft die Anzahl der Kategorien in der Kategorieressourcendatei ab oder legt diese fest.
Öffentliche Eigenschaft CategoryResourceFile Ruft den Pfad der Ressourcendatei ab, die die Kategoriezeichenfolgen für die Quelle enthält, oder legt diesen fest.
Öffentliche Eigenschaft LogName Ruft den Namen des Ereignisprotokolls ab, in das von der Quelle Einträge geschrieben werden, oder legt diesen fest.
Öffentliche Eigenschaft MachineName Ruft den Namen des Computers ab, auf dem die Ereignisquelle registriert werden soll, oder legt diesen fest.
Öffentliche Eigenschaft MessageResourceFile Ruft den Pfad der Meldungsressourcendatei ab, die die Meldungsformatzeichenfolgen für die Quelle enthält, oder legt diesen fest.
Öffentliche Eigenschaft ParameterResourceFile Ruft den Pfad der Ressourcendatei ab, die die Meldungsparameterzeichenfolgen für die Quelle enthält, oder legt diesen fest.
Öffentliche Eigenschaft Source Ruft den Namen zum Registrieren des Ereignisprotokolls als Ereignisquelle ab oder legt diesen fest.
Zum Seitenanfang
  Name Beschreibung
Öffentliche Methode Equals(Object) Bestimmt, ob das angegebene Object und das aktuelle Object gleich sind. (Von Object geerbt.)
Geschützte Methode Finalize Gibt einem Objekt Gelegenheit zu dem Versuch, Ressourcen freizugeben und andere Bereinigungen durchzuführen, bevor es von der automatische Speicherbereinigung freigegeben wird. (Von Object geerbt.)
Öffentliche Methode GetHashCode Fungiert als Hashfunktion für einen bestimmten Typ. (Von Object geerbt.)
Öffentliche Methode GetType Ruft den Type der aktuellen Instanz ab. (Von Object geerbt.)
Geschützte Methode MemberwiseClone Erstellt eine flache Kopie des aktuellen Object. (Von Object geerbt.)
Öffentliche Methode ToString Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Von Object geerbt.)
Zum Seitenanfang

Mithilfe der EventSourceCreationData-Klasse können Sie eine neue Quelle zum Schreiben lokalisierter Einträge in ein Ereignisprotokoll konfigurieren. Es ist nicht erforderlich, diese Klasse zum Lesen aus einem Ereignisprotokoll zu verwenden.

Diese Klasse definiert die Konfigurationseinstellungen für eine neue Ereignisquelle und deren zugehöriges Ereignisprotokoll. Das zugeordnete Ereignisprotokoll kann sich auf dem lokalen oder einem Remotecomputer befinden. Zum Erstellen einer neuen Quelle für ein neues oder vorhandenes Ereignisprotokoll auf dem lokalen Computer legen Sie die LogName-Eigenschaft und die Source-Eigenschaft einer EventSourceCreationData fest, und rufen Sie die EventLog.CreateEventSource(EventSourceCreationData)-Methode auf. Diese Methode erstellt die von Ihnen in der Source-Eigenschaft angegebene Ereignisquelle und registriert diese für das im LogName angegebene Ereignisprotokoll. Dieses Verhalten gleicht dem Verwenden der EventLogInstaller-Klasse zum Registrieren einer Ereignisquelle für ein Ereignisprotokoll.

Verwenden Sie die WriteEvent-Methode und die WriteEntry-Methode, um Ereignisse in ein Ereignisprotokoll zu schreiben. Sie müssen zum Schreiben von Ereignissen eine Ereignisquelle angeben. Bevor Sie den ersten Eintrag mit der Quelle schreiben, müssen Sie die Ereignisquelle erstellen und konfigurieren.

Erstellen Sie die neue Ereignisquelle während der Installation der Anwendung. So hat das Betriebssystem Zeit, die Liste der registrierten Ereignisquellen und deren Konfigurationen zu aktualisieren. Wenn die Liste der Ereignisquellen vom Betriebssystem nicht aktualisiert wurde und Sie versuchen, ein Ereignis für die neue Quelle zu schreiben, schlägt der Schreibvorgang fehl. Sie können eine neue Quelle entweder mithilfe eines EventLogInstaller oder mithilfe der CreateEventSource-Methode erstellen. Sie benötigen Administratorrechte für den Computer, um eine neue Ereignisquelle zu erstellen.

Sie können eine Ereignisquelle für ein vorhandenes oder für ein neues Ereignisprotokoll erstellen. Wenn Sie eine neue Quelle für ein neues Ereignisprotokoll erstellen, wird die Quelle für das Protokoll im System registriert, das Protokoll wird jedoch erst beim Schreiben des ersten Eintrags erstellt.

Die einzelnen Quellen können immer nur in je ein Ereignisprotokoll schreiben. Die Anwendung kann jedoch mehrere Quellen verwenden, um in mehrere Ereignisprotokolle zu schreiben. Beispielsweise müssen für die Anwendung u. U. mehrere Quellen für unterschiedliche Ereignisprotokolle oder Ressourcendateien konfiguriert werden.

Wenn Sie die Konfiguration einer vorhandenen Quelle ändern möchten, müssen Sie sie löschen und mit der neuen Konfiguration neu erstellen. Wenn andere Anwendungen oder Komponenten die vorhandene Quelle nutzen, erstellen Sie eine neue Quelle mit der aktualisierten Konfiguration, anstatt die vorhandene Quelle zu löschen.

Sie können die Ereignisquelle mit lokalisierten Ressourcen für die Ereigniskategorie und die Meldungszeichenfolgen registrieren. Die Anwendung kann Ereignisprotokolleinträge mit Ressourcenbezeichnern schreiben, anstatt die tatsächliche Zeichenfolge anzugeben. Die Ereignisanzeige sucht anhand des Ressourcenbezeichners und der aktuellen Spracheinstellungen nach der entsprechenden Zeichenfolge in der lokalisierten Ressourcendatei und zeigt sie an. Sie können für Ereigniskategorien, Meldungen und Parametereinfügezeichenfolgen jeweils eine eigene Datei registrieren, oder Sie können für alle drei Typen von Zeichenfolgen dieselbe Ressourcendatei registrieren. Mit den Eigenschaften CategoryCount, CategoryResourceFile, MessageResourceFile und ParameterResourceFile konfigurieren Sie die Quelle zum Schreiben lokalisierter Einträge in das Ereignisprotokoll. Wenn die Anwendung Zeichenfolgenwerte direkt in das Ereignisprotokoll schreibt, müssen diese Eigenschaften nicht festgelegt werden.

Die Quelle muss entweder zum Schreiben lokalisierter Einträge oder zum Schreiben direkter Zeichenfolgen konfiguriert werden. Die WriteEntry-Methode schreibt die angegebene Zeichenfolge direkt in das Ereignisprotokoll, ohne eine lokalisierbare Meldungsressourcendatei zu verwenden. Verwenden Sie die WriteEvent-Methode, um Ereignisse mithilfe einer lokalisierten Meldungsressourcendatei zu schreiben.

Wenn die Anwendung beim Schreiben von Einträgen sowohl Ressourcenbezeichner als auch Zeichenfolgenwerte verwendet, müssen Sie zwei getrennte Quellen registrieren. Konfigurieren Sie beispielsweise eine Quelle mit Ressourcendateien, und verwenden Sie diese Quelle dann in der WriteEvent-Methode, um Einträge mithilfe von Ressourcenbezeichnern in das Ereignisprotokoll zu schreiben. Erstellen Sie dann eine andere Quelle ohne Ressourcendateien, und verwenden Sie diese Quelle in der WriteEntry-Methode, um Zeichenfolgen mithilfe dieser Quelle direkt in das Ereignisprotokoll zu schreiben.

Hinweis zu Windows 98: Ereignisprotokolle werden unter Windows 98 oder Windows Millennium Edition (Me) nicht unterstützt.

Im folgenden Codebeispiel werden die Konfigurationseigenschaften für eine Ereignisquelle aus Befehlszeilenargumenten festgelegt. Die Eingabeargumente geben den Namen der Ereignisquelle, den Ereignisprotokollnamen, den Computernamen sowie die Datei der Ereignismeldungsressource an. Im Codebeispiel wird überprüft, dass die Quelle keine Konflikte mit einer vorhandenen Ereignisquelle erzeugt. Anschließend wird die neue Ereignisquelle für das angegebene Ereignisprotokoll erstellt.


using System;
using System.Globalization;
using System.Diagnostics;

namespace EventLogSamples
{
    class CreateSourceSample
    {
        [STAThread]
        static void Main(string[] args)
        {
            EventSourceCreationData mySourceData = new EventSourceCreationData("", "");
            bool registerSource = true;

            // Process input parameters.
            if (args.Length > 0)
            {
                // Require at least the source name.

                mySourceData.Source = args[0];

                if (args.Length > 1)
                {
                    mySourceData.LogName = args[1];
                }

                if (args.Length > 2)
                {
                    mySourceData.MachineName = args[2];
                }
                if ((args.Length > 3) && (args[3].Length > 0))
                {
                    mySourceData.MessageResourceFile = args[3];
                }
            }
            else 
            {
                // Display a syntax help message.
                Console.WriteLine("Input:");
                Console.WriteLine(" source [event log] [machine name] [resource file]");

                registerSource = false;
            }

            // Set defaults for parameters missing input.
            if (mySourceData.MachineName.Length == 0)
            {
                // Default to the local computer.
                mySourceData.MachineName = ".";
            }
            if (mySourceData.LogName.Length == 0)
            {
                // Default to the Application log.
                mySourceData.LogName = "Application";
            }

            // Determine if the source exists on the specified computer.
            if (!EventLog.SourceExists(mySourceData.Source, 
                                       mySourceData.MachineName))
            {
                // The source does not exist.  

                // Verify that the message file exists
                // and the event log is local.

                if ((mySourceData.MessageResourceFile != null) &&
                    (mySourceData.MessageResourceFile.Length > 0))
                {
                    if (mySourceData.MachineName == ".") 
                    {
                        if (!System.IO.File.Exists(mySourceData.MessageResourceFile))
                        {
                            Console.WriteLine("File {0} not found - message file not set for source.",
                                mySourceData.MessageResourceFile);
                            registerSource = false;
                        }
                    }
                    else 
                    {
                        // For simplicity, do not allow setting the message
                        // file for a remote event log.  To set the message
                        // for a remote event log, and for source registration,
                        // the file path should be specified with system-wide
                        // environment variables that are valid on the remote
                        // computer, such as
                        // "%SystemRoot%\system32\myresource.dll".

                        Console.WriteLine("Message resource file ignored for remote event log.");
                        registerSource = false;
                    }
                }
            }
            else
            {
                // Do not register the source, it already exists.
                registerSource = false;

                // Get the event log corresponding to the existing source.
                string sourceLog;
                sourceLog = EventLog.LogNameFromSourceName(mySourceData.Source,
                                mySourceData.MachineName);

                // Determine if the event source is registered for the 
                // specified log.

                if (sourceLog.ToUpper(CultureInfo.InvariantCulture) != mySourceData.LogName.ToUpper(CultureInfo.InvariantCulture)) 
                {
                    // An existing source is registered 
                    // to write to a different event log.
                    Console.WriteLine("Warning: source {0} is already registered to write to event log {1}",
                        mySourceData.Source, sourceLog);
                }
                else 
                {
                    // The source is already registered 
                    // to write to the specified event log.

                    Console.WriteLine("Source {0} already registered to write to event log {1}",
                        mySourceData.Source, sourceLog);
                }
            }


            if (registerSource)
            {
                // Register the new event source for the specified event log.

                Console.WriteLine("Registering new source {0} for event log {1}.",
                    mySourceData.Source, mySourceData.LogName);
                EventLog.CreateEventSource(mySourceData);
                Console.WriteLine("Event source was registered successfully!");
            }
        }
    }
}


.NET Framework

Unterstützt in: 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

Windows 7, Windows Vista SP1 oder höher, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core wird nicht unterstützt), Windows Server 2008 R2 (Server Core wird mit SP1 oder höher unterstützt), Windows Server 2003 SP2

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.
Alle öffentlichen static (Shared in Visual Basic)-Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.
Fanden Sie dies hilfreich?
(1500 verbleibende Zeichen)
Community-Inhalt Hinzufügen
Anmerkungen FAQ
Microsoft führt eine Onlineumfrage durch, um Ihre Meinung zur MSDN-Website zu erfahren. Wenn Sie sich zur Teilnahme entscheiden, wird Ihnen die Onlineumfrage angezeigt, sobald Sie die MSDN-Website verlassen.

Möchten Sie an der Umfrage teilnehmen?