Partager via


EventSourceCreationData Classe

Définition

Représente les paramètres de configuration utilisés pour créer une source de journal des événements sur l'ordinateur local ou un ordinateur distant.

public ref class EventSourceCreationData
public class EventSourceCreationData
type EventSourceCreationData = class
Public Class EventSourceCreationData
Héritage
EventSourceCreationData

Exemples

L’exemple de code suivant définit les propriétés de configuration d’une source d’événement à partir d’arguments de ligne de commande. Les arguments d’entrée spécifient le nom de la source de l’événement, le nom du journal des événements, le nom de l’ordinateur et le fichier de ressources de message d’événement. L’exemple de code vérifie que la source n’est pas en conflit avec une source d’événements existante, puis crée la nouvelle source d’événements pour le journal des événements spécifié.

#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

Remarques

Utilisez la EventSourceCreationData classe pour configurer une nouvelle source pour l’écriture d’entrées localisées dans un journal des événements. Il n’est pas nécessaire d’utiliser cette classe pour lire à partir d’un journal des événements.

Cette classe définit les paramètres de configuration d’une nouvelle source d’événements et de son journal des événements associé. Le journal des événements associé peut se trouver sur l’ordinateur local ou sur un ordinateur distant. Pour créer une source pour un journal d’événements nouveau ou existant sur l’ordinateur local, définissez les LogName propriétés et Source d’un EventSourceCreationData et appelez la EventLog.CreateEventSource(EventSourceCreationData) méthode . Cette méthode crée la source d’événements que vous spécifiez dans la Source propriété et l’inscrit pour le journal des événements spécifié dans LogName. Ce comportement est similaire à l’utilisation de la EventLogInstaller classe pour inscrire une source d’événements pour un journal des événements.

Utilisez les WriteEvent méthodes et WriteEntry pour écrire des événements dans un journal des événements. Vous devez spécifier une source d’événement pour écrire des événements ; vous devez créer et configurer la source d’événement avant d’écrire la première entrée avec la source.

Create la nouvelle source d’événement lors de l’installation de votre application. Cela laisse le temps au système d’exploitation d’actualiser sa liste de sources d’événements inscrites et leurs configurations. Si le système d’exploitation n’a pas actualisé sa liste de sources d’événements et que vous tentez d’écrire un événement avec la nouvelle source, l’opération d’écriture échoue. Vous pouvez configurer une nouvelle source à l’aide d’un EventLogInstaller, ou à l’aide de la CreateEventSource méthode . Vous devez disposer des droits d’administration sur l’ordinateur pour créer une source d’événement.

Vous pouvez créer une source d’événements pour un journal des événements existant ou un nouveau journal des événements. Lorsque vous créez une source pour un nouveau journal des événements, le système enregistre la source pour ce journal, mais le journal n’est créé qu’une fois que la première entrée n’y est pas écrite.

Chaque source ne peut écrire que dans un journal des événements à la fois ; Toutefois, votre application peut utiliser plusieurs sources pour écrire dans plusieurs journaux d’événements. Par exemple, votre application peut avoir besoin de plusieurs sources configurées pour différents journaux d’événements ou différents fichiers de ressources.

Pour modifier les détails de configuration d’une source existante, vous devez supprimer la source, puis la créer avec la nouvelle configuration. Si d’autres applications ou composants utilisent la source existante, créez une source avec la configuration mise à jour au lieu de supprimer la source existante.

Vous pouvez inscrire la source d’événement avec des ressources localisées pour votre catégorie d’événement et vos chaînes de message. Votre application peut écrire des entrées de journal des événements à l’aide d’identificateurs de ressource, plutôt que de spécifier la chaîne réelle. Le observateur d'événements utilise l’identificateur de ressource pour rechercher et afficher la chaîne correspondante à partir du fichier de ressources localisé en fonction des paramètres de langue actuels. Vous pouvez inscrire un fichier distinct pour les catégories d’événements, les messages et les chaînes d’insertion de paramètres, ou vous pouvez inscrire le même fichier de ressources pour les trois types de chaînes. Utilisez les CategoryCountpropriétés , CategoryResourceFile, MessageResourceFileet ParameterResourceFile pour configurer la source afin d’écrire des entrées localisées dans le journal des événements. Si votre application écrit des valeurs de chaîne directement dans le journal des événements, vous n’avez pas besoin de définir ces propriétés.

La source doit être configurée pour écrire des entrées localisées ou pour écrire des chaînes directes. La WriteEntry méthode écrit la chaîne donnée directement dans le journal des événements ; elle n’utilise pas de fichier de ressources de message localisable. Utilisez la WriteEvent méthode pour écrire des événements à l’aide d’un fichier de ressources de message localisé.

Si votre application écrit des entrées à l’aide d’identificateurs de ressource et de valeurs de chaîne, vous devez inscrire deux sources distinctes. Par exemple, configurez une source avec des fichiers de ressources, puis utilisez cette source dans la WriteEvent méthode pour écrire des entrées à l’aide d’identificateurs de ressource dans le journal des événements. Créez ensuite une autre source sans fichiers de ressources et utilisez cette source dans la WriteEntry méthode pour écrire des chaînes directement dans le journal des événements à l’aide de cette source.

Constructeurs

EventSourceCreationData(String, String)

Initialise une nouvelle instance de la classe EventSourceCreationData avec une source d'événements et un nom de journal des événements spécifiés.

Propriétés

CategoryCount

Obtient ou définit le numéro de catégorie dans le fichier de ressources de catégorie.

CategoryResourceFile

Obtient ou définit le chemin d'accès du fichier de ressources contenant des chaînes de catégorie pour la source.

LogName

Obtient ou définit le nom du journal des événements dans lequel la source écrit des entrées.

MachineName

Obtient ou définit le nom de l'ordinateur à utiliser pour enregistrer la source d'événements.

MessageResourceFile

Obtient ou définit le chemin d'accès du fichier de ressources du message contenant des chaînes de mise en forme du message pour la source.

ParameterResourceFile

Obtient ou définit le chemin d'accès du fichier de ressources qui contient des chaînes de paramètre du message pour la source.

Source

Obtient ou définit le nom à enregistrer auprès du journal des événements en tant que source d'événements.

Méthodes

Equals(Object)

Détermine si l'objet spécifié est égal à l'objet actuel.

(Hérité de Object)
GetHashCode()

Fait office de fonction de hachage par défaut.

(Hérité de Object)
GetType()

Obtient le Type de l'instance actuelle.

(Hérité de Object)
MemberwiseClone()

Crée une copie superficielle du Object actuel.

(Hérité de Object)
ToString()

Retourne une chaîne qui représente l'objet actuel.

(Hérité de Object)

S’applique à

Voir aussi