Freigeben über


EventSourceCreationData Klasse

Definition

Stellt die Konfigurationseinstellungen dar, die zum Erstellen einer Ereignisprotokollquelle auf dem lokalen Computer oder einem Remotecomputer verwendet werden.

public ref class EventSourceCreationData
public class EventSourceCreationData
type EventSourceCreationData = class
Public Class EventSourceCreationData
Vererbung
EventSourceCreationData

Beispiele

Im folgenden Codebeispiel werden die Konfigurationseigenschaften für eine Ereignisquelle aus Befehlszeilenargumenten festgelegt. Die Eingabeargumente geben den Namen der Ereignisquelle, den Namen des Ereignisprotokolls, den Computernamen und die Ressourcendatei für Ereignisnachrichten an. Im Codebeispiel wird überprüft, ob die Quelle nicht mit einer vorhandenen Ereignisquelle in Konflikt steht, und erstellt dann die neue Ereignisquelle für das angegebene Ereignisprotokoll.

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!");
            }
        }
    }
}
Imports System.Globalization
Imports System.Diagnostics

Namespace EventLogSamples
    Class CreateSourceSample

        Public Shared Sub Main(ByVal args() As String)
        
            Dim mySourceData As EventSourceCreationData = new EventSourceCreationData("", "")
            Dim registerSource As Boolean = 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)
    
                End If
                If args.Length > 2
   
                    mySourceData.MachineName = args(2)
    
                End If
                If args.Length > 3 AndAlso args(3).Length > 0
   
                    mySourceData.MessageResourceFile = args(3)
    
                End If

            Else 
                ' Display a syntax help message.
                Console.WriteLine("Input:")
                Console.WriteLine(" source [event log] [machine name] [resource file]")

                registerSource = False
            End If

            ' Set defaults for parameters missing input.
            If mySourceData.MachineName.Length = 0
            
                ' Default to the local computer.
                mySourceData.MachineName = "."
            End If
            If mySourceData.LogName.Length = 0
                ' Default to the Application log.
                mySourceData.LogName = "Application"
            End If

            ' Determine if the source exists on the specified computer.
            If Not 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 <> Nothing AndAlso _
                   mySourceData.MessageResourceFile.Length > 0
                   
                    If mySourceData.MachineName = "."
                        If Not System.IO.File.Exists(mySourceData.MessageResourceFile)

                            Console.WriteLine("File {0} not found - message file not set for source.", _
                                mySourceData.MessageResourceFile)
                            registerSource = False
                        End If
                    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

                    End If
                End If
            Else 
                ' Do not register the source, it already exists.
                registerSource = False

                ' Get the event log corresponding to the existing source.
                Dim sourceLog As string
                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)

                End If
            End If

            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!")
            End If

        End Sub
    End Class
End Namespace 'EventLogSamples

Hinweise

Verwenden Sie die EventSourceCreationData Klasse, um eine neue Quelle zum Schreiben lokalisierter Einträge in ein Ereignisprotokoll zu 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 das zugehörige Ereignisprotokoll. Das zugeordnete Ereignisprotokoll kann sich auf dem lokalen Computer oder einem Remotecomputer befinden. Wenn Sie eine neue Quelle für ein neues oder vorhandenes Ereignisprotokoll auf dem lokalen Computer erstellen möchten, legen Sie die LogName Eigenschaften Source und Eigenschaften einer EventSourceCreationData Methode fest, und rufen Sie die EventLog.CreateEventSource(EventSourceCreationData) Methode auf. Diese Methode erstellt die ereignisquelle, die Sie in der Source Eigenschaft angeben, und registriert sie für das in LogNameangegebene Ereignisprotokoll. Dieses Verhalten ähnelt der Verwendung der EventLogInstaller Klasse zum Registrieren einer Ereignisquelle für ein Ereignisprotokoll.

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

Erstellen Sie die neue Ereignisquelle während der Installation Ihrer Anwendung. Dadurch kann das Betriebssystem seine Liste der registrierten Ereignisquellen und deren Konfigurationen aktualisieren. Wenn das Betriebssystem seine Liste der Ereignisquellen nicht aktualisiert hat und Sie versuchen, ein Ereignis mit der neuen Quelle zu schreiben, schlägt der Schreibvorgang fehl. Sie können eine neue Quelle mithilfe einer EventLogInstallerOder mithilfe der CreateEventSource Methode konfigurieren. Sie müssen über Administratorrechte auf dem Computer verfügen, um eine neue Ereignisquelle zu erstellen.

Sie können eine Ereignisquelle für ein vorhandenes Ereignisprotokoll oder ein neues Ereignisprotokoll erstellen. Wenn Sie eine neue Quelle für ein neues Ereignisprotokoll erstellen, registriert das System die Quelle für dieses Protokoll, aber das Protokoll wird erst erstellt, wenn der erste Eintrag in das Protokoll geschrieben wird.

Jede Quelle kann jeweils nur in ein Ereignisprotokoll schreiben; Ihre Anwendung kann jedoch mehrere Quellen verwenden, um in mehrere Ereignisprotokolle zu schreiben. Ihre Anwendung benötigt z. B. möglicherweise mehrere Quellen, die für unterschiedliche Ereignisprotokolle oder unterschiedliche Ressourcendateien konfiguriert sind.

Um die Konfigurationsdetails einer vorhandenen Quelle zu ändern, müssen Sie die Quelle löschen und dann mit der neuen Konfiguration erstellen. Wenn andere Anwendungen oder Komponenten die vorhandene Quelle verwenden, 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 Ihre Ereigniskategorie und Nachrichtenzeichenfolgen registrieren. Ihre Anwendung kann Ereignisprotokolleinträge mithilfe von Ressourcenbezeichnern schreiben, anstatt die tatsächliche Zeichenfolge anzugeben. Die Ereignisanzeige verwendet den Ressourcenbezeichner, um die entsprechende Zeichenfolge aus der lokalisierten Ressourcendatei basierend auf den aktuellen Spracheinstellungen zu suchen und anzuzeigen. Sie können eine separate Datei für Ereigniskategorien, Nachrichten und Parametereinfügungszeichenfolgen registrieren, oder Sie können dieselbe Ressourcendatei für alle drei Arten von Zeichenfolgen registrieren. Verwenden Sie die CategoryCountEigenschaften , CategoryResourceFile, MessageResourceFileum ParameterResourceFile die Quelle so zu konfigurieren, dass lokalisierte Einträge in das Ereignisprotokoll geschrieben werden. Wenn Ihre Anwendung Zeichenfolgenwerte direkt in das Ereignisprotokoll schreibt, müssen Sie diese Eigenschaften nicht festlegen.

Die Quelle muss entweder für das Schreiben lokalisierter Einträge oder für das Schreiben von direkten Zeichenfolgen konfiguriert werden. Die WriteEntry Methode schreibt die angegebene Zeichenfolge direkt in das Ereignisprotokoll. Sie verwendet keine lokalisierbare Nachrichtenressourcendatei. Verwenden Sie die WriteEvent Methode, um Ereignisse mithilfe einer lokalisierten Nachrichtenressourcendatei zu schreiben.

Wenn Ihre Anwendung Einträge mit Ressourcenbezeichnern und Zeichenfolgenwerten schreibt, müssen Sie zwei separate Quellen registrieren. Konfigurieren Sie beispielsweise eine Quelle mit Ressourcendateien, und verwenden Sie diese Quelle 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 direkt in das Ereignisprotokoll mithilfe dieser Quelle zu schreiben.

Konstruktoren

Name Beschreibung
EventSourceCreationData(String, String)

Initialisiert eine neue Instanz der EventSourceCreationData Klasse mit einem angegebenen Ereignisquell- und Ereignisprotokollnamen.

Eigenschaften

Name Beschreibung
CategoryCount

Ruft die Anzahl der Kategorien in der Kategorieressourcendatei ab oder legt sie fest.

CategoryResourceFile

Dient zum Abrufen oder Festlegen des Pfads der Ressourcendatei, die Kategoriezeichenfolgen für die Quelle enthält.

LogName

Dient zum Abrufen oder Festlegen des Namens des Ereignisprotokolls, in das die Quelle Einträge schreibt.

MachineName

Ruft den Namen des Computers ab, auf dem die Ereignisquelle registriert werden soll, oder legt diesen fest.

MessageResourceFile

Dient zum Abrufen oder Festlegen des Pfads der Nachrichtenressourcendatei, die Nachrichtenformatierungszeichenfolgen für die Quelle enthält.

ParameterResourceFile

Dient zum Abrufen oder Festlegen des Pfads der Ressourcendatei, die Nachrichtenparameterzeichenfolgen für die Quelle enthält.

Source

Ruft den Namen ab, der mit dem Ereignisprotokoll als Ereignisquelle registriert werden soll, oder legt diesen fest.

Methoden

Name Beschreibung
Equals(Object)

Bestimmt, ob das angegebene Objekt dem aktuellen Objekt entspricht.

(Geerbt von Object)
GetHashCode()

Dient als Standardhashfunktion.

(Geerbt von Object)
GetType()

Ruft die Type der aktuellen Instanz ab.

(Geerbt von Object)
MemberwiseClone()

Erstellt eine flache Kopie der aktuellen Object.

(Geerbt von Object)
ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)

Gilt für:

Weitere Informationen