Exportar (0) Imprimir
Expandir todo

EventSourceCreationData (Clase)

Nota: esta clase es nueva en la versión 2.0 de .NET Framework.

Representa los valores de configuración utilizados para crear un origen de registro de eventos en el equipo local o un equipo remoto.

Espacio de nombres: System.Diagnostics
Ensamblado: System (en system.dll)

public class EventSourceCreationData
public class EventSourceCreationData
public class EventSourceCreationData

Utilice la clase EventSourceCreationData para configurar un nuevo origen a fin de escribir las entradas adaptadas en un registro de eventos. No es necesario usar esta clase para leer a partir de un registro de eventos.

Esta clase define los valores de configuración de un nuevo origen de eventos y su registro de eventos asociado. Este registro puede estar en el equipo local o un equipo remoto. Con el fin de crear un nuevo origen para un registro de eventos nuevo o existente en el equipo local, establezca las propiedades LogName y Source de EventSourceCreationData y llame al método EventLog.CreateEventSource(EventSourceCreationData). Este método crea el origen de eventos especificado en la propiedad Source y lo registra para el registro de eventos especificado en LogName. Este comportamiento es parecido a utilizar la clase EventLogInstaller para registrar un origen de eventos de un registro de eventos.

Utilice los métodos WriteEvent y WriteEntry para escribir eventos en un registro de eventos. Para escribir eventos, es necesario especificar un origen de eventos; asimismo, antes de escribir la primera entrada con el origen, es necesario crearlo y configurarlo.

El nuevo origen de eventos deberá crearse durante la instalación de la aplicación. De esta manera, el sistema operativo dispondrá de tiempo para actualizar la lista de orígenes de eventos registrados y sus configuraciones. Si el sistema operativo aún no ha actualizado la lista de orígenes de eventos y se intenta escribir un evento con el nuevo origen, se producirá un error en la operación de escritura. Para configurar un nuevo origen, puede utilizarse EventLogInstaller o el método CreateEventSource. Es necesario contar con derechos administrativos en el equipo para crear un nuevo origen de eventos.

Puede crearse un origen de eventos para un registro de eventos ya existente o para uno nuevo. Cuando se crea un origen para un registro de eventos nuevo, el sistema registra el origen de ese registro, pero éste no se crea hasta que no se escriba la primera entrada en él.

Aunque cada origen sólo puede escribir en un registro de eventos a la vez, la aplicación puede utilizar varios orígenes para escribir en diversos registros. Por ejemplo, una aplicación podría requerir la configuración de varios orígenes para diferentes registros de eventos o archivos de recursos.

Para cambiar los detalles de configuración de un origen ya existente, será necesario eliminarlo primero para volver a crearlo con la nueva configuración. Si otras aplicaciones o componentes lo estuvieran utilizando, en lugar de eliminarlo, deberá crearse uno nuevo con la configuración actualizada.

El origen de eventos puede registrarse con recursos adaptados para la categoría de eventos y las cadenas de mensaje. Una aplicación puede escribir entradas del registro de eventos mediante identificadores de recursos en lugar de especificar la cadena real. El visor de eventos utiliza el identificador del recurso para buscar y mostrar, en función de la configuración de idioma actual, la correspondiente cadena del archivo de recursos adaptado. Puede registrarse un archivo independiente para las cadenas de categoría de eventos, mensajes e inserción de parámetros, o bien un mismo archivo de recursos para los tres tipos de cadenas. Las propiedades CategoryCount, CategoryResourceFile, MessageResourceFile y ParameterResourceFile se emplean para configurar un origen para la escritura de entradas adaptadas en el registro de eventos. Cuando una aplicación escribe valores de cadena directamente en el registro de eventos, no es necesario establecer estas propiedades.

El origen deberá configurarse para escribir o bien entradas adaptadas o bien cadenas directas. El método WriteEntry escribe la cadena especificada directamente en el registro de eventos, no utiliza un archivo de recursos de mensajes adaptado. Para escribir eventos mediante archivo de recursos de mensajes adaptado, deberá utilizarse el método WriteEvent.

Cuando una aplicación escriba entradas usando tanto identificadores de recursos como valores de cadena, deberán registrarse dos orígenes diferentes. Por ejemplo, puede configurarse un origen con archivos de recursos y usarlo en el método WriteEvent para escribir entradas en el registro de eventos mediante identificadores de recursos. A continuación, se puede crear otro origen sin archivos de recursos y usarlo en el método WriteEntry para escribir cadenas directamente en el registro de eventos.

Nota de la plataforma Windows 98: Los registros de eventos no son compatibles con Windows 98 ni Windows Millennium (Me).

En el ejemplo de código siguiente se establecen las propiedades de configuración de un origen de eventos mediante argumentos de la línea de comandos. Los argumentos de entrada especifican el nombre del origen y del registro de eventos, el nombre del equipo y el archivo de recursos de mensajes de eventos. El ejemplo de código comprueba que el origen no entra en conflicto con un origen de eventos existente y, a continuación, crea el nuevo origen de eventos para el registro de eventos especificado.

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!");
            }
        }
    }
}

System.Object
  System.Diagnostics.EventSourceCreationData

Los miembros estáticos públicos (Shared en Visual Basic) de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.

Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Media Center, Windows XP Professional x64, Windows XP SP2, Windows XP Starter Edition

.NET Framework no admite todas las versiones de cada plataforma. Para obtener una lista de las versiones admitidas, vea Requisitos del sistema.

.NET Framework

Compatible con: 2.0

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft