EventSourceCreationData Klasse

Definition

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

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 Ereignisquellennamen, den Ereignisprotokollnamen, 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.dll>

using namespace System;
using namespace System::Globalization;
using namespace System::Diagnostics;

[STAThread]
int main()
{
   array<String^>^args = Environment::GetCommandLineArgs();
   
   EventSourceCreationData ^ mySourceData = gcnew EventSourceCreationData( "","" );
   bool registerSource = true;
   
   // Process input parameters.
   if ( args->Length > 1 )
   {
      
      // Require at least the source name.
      mySourceData->Source = args[ 1 ];
      if ( args->Length > 2 )
      {
         mySourceData->LogName = args[ 2 ];
      }

      if ( args->Length > 3 )
      {
         mySourceData->MachineName = args[ 3 ];
      }

      if ( (args->Length > 4) && (args[ 4 ]->Length > 0) )
      {
         mySourceData->MessageResourceFile = args[ 4 ];
      }
   }
   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 != nullptr) && (mySourceData->MessageResourceFile->Length > 0) )
      {
         if ( mySourceData->MachineName->Equals( "." ) )
         {
            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!" );
   }
}
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 zu verwenden, um aus einem Ereignisprotokoll zu lesen.

Diese Klasse definiert die Konfigurationseinstellungen für eine neue Ereignisquelle und das zugehörige Ereignisprotokoll. Das zugeordnete Ereignisprotokoll kann auf dem lokalen Computer oder einem Remotecomputer sein. 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 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 angegebene LogNameEreignisprotokoll. 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 angeben, um Ereignisse zu schreiben; 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 die Liste der registrierten Ereignisquellen und deren Konfigurationen aktualisieren. Wenn das Betriebssystem die 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 administrative Rechte auf dem Computer haben, 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 darauf geschrieben wird.

Jede Quelle kann nur zu einem Zeitpunkt in ein Ereignisprotokoll schreiben; Ihre Anwendung kann jedoch mehrere Quellen verwenden, um in mehrere Ereignisprotokolle zu schreiben. Beispielsweise benötigt Ihre Anwendung 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 aktuellen Spracheinstellungen zu finden und anzuzeigen. Sie können eine separate Datei für Ereigniskategorien, Nachrichten und Parametereinfügezeichenfolgen registrieren oder die gleiche Ressourcendatei für alle drei Arten von Zeichenfolgen registrieren. Verwenden Sie die Eigenschaften , MessageResourceFile, um ParameterResourceFile die CategoryCountQuelle so zu konfigurieren, CategoryResourceFiledass 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 zum Schreiben von direkten Zeichenfolgen konfiguriert werden. Die WriteEntry Methode schreibt die angegebene Zeichenfolge direkt in das Ereignisprotokoll. Sie verwendet keine gebietsschemaierbare Nachrichtenressourcedatei. Verwenden Sie die WriteEvent Methode, um Ereignisse mithilfe einer lokalisierten Nachrichtenressourcedatei 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 Methode, um Einträge mithilfe von Ressourcenbezeichnern in das WriteEvent 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 mit dieser Quelle zu schreiben.

Konstruktoren

EventSourceCreationData(String, String)

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

Eigenschaften

CategoryCount

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

CategoryResourceFile

Ruft den Pfad der Ressourcendatei ab, die die Kategoriezeichenfolgen für die Quelle enthält, oder legt diesen fest.

LogName

Ruft den Namen des Ereignisprotokolls ab, in das von der Quelle Einträge geschrieben werden, oder legt diesen fest.

MachineName

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

MessageResourceFile

Ruft den Pfad der Meldungsressourcendatei ab, die die Meldungsformatzeichenfolgen für die Quelle enthält, oder legt diesen fest.

ParameterResourceFile

Ruft den Pfad der Ressourcendatei ab, die die Meldungsparameterzeichenfolgen für die Quelle enthält, oder legt diesen fest.

Source

Ruft den Namen zum Registrieren des Ereignisprotokolls als Ereignisquelle ab oder legt diesen fest.

Methoden

Equals(Object)

Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist.

(Geerbt von Object)
GetHashCode()

Fungiert als Standardhashfunktion.

(Geerbt von Object)
GetType()

Ruft den Type der aktuellen Instanz ab.

(Geerbt von Object)
MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.

(Geerbt von Object)
ToString()

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

(Geerbt von Object)

Gilt für:

Siehe auch