EventSourceCreationData Classe

Definição

Representa as definições de configuração usadas para criar uma fonte de registo de eventos no computador local ou num computador remoto.

public ref class EventSourceCreationData
public class EventSourceCreationData
type EventSourceCreationData = class
Public Class EventSourceCreationData
Herança
EventSourceCreationData

Exemplos

O exemplo de código seguinte define as propriedades de configuração de uma fonte de evento a partir de argumentos de linha de comandos. Os argumentos de entrada especificam o nome da fonte do evento, o nome do registo de eventos, o nome do computador e o ficheiro de recurso da mensagem do evento. O exemplo de código verifica se a fonte não entra em conflito com uma fonte de eventos existente e depois cria a nova fonte de eventos para o registo 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!");
            }
        }
    }
}
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

Observações

Use a EventSourceCreationData classe para configurar uma nova fonte para escrever entradas localizadas num registo de eventos. Não é necessário usar esta classe para ler a partir de um registo de eventos.

Esta classe define as definições de configuração para uma nova fonte de eventos e o respetivo registo de eventos. O registo de eventos associado pode estar no computador local ou num computador remoto. Para criar uma nova fonte para um registo de eventos novo ou existente no computador local, defina as LogName propriedades e Source de um EventSourceCreationData e chame o EventLog.CreateEventSource(EventSourceCreationData) método. Este método cria a fonte de eventos que especifica na Source propriedade e regista-a para o registo de eventos especificado em LogName. Este comportamento é semelhante a usar a EventLogInstaller classe para registar uma fonte de eventos para um registo de eventos.

Use os WriteEvent métodos e WriteEntry para escrever eventos num registo de eventos. Deve especificar uma fonte de eventos para escrever eventos; Deve criar e configurar o código-fonte do evento antes de escrever a primeira entrada com o código-fonte.

Crie a nova fonte de eventos durante a instalação da sua aplicação. Isto permite que o sistema operativo atualize a sua lista de fontes de eventos registadas e as suas configurações. Se o sistema operativo não atualizou a sua lista de fontes de eventos, e tentar escrever um evento com a nova fonte, a operação de escrita falhará. Pode configurar uma nova fonte usando um EventLogInstaller, ou usando o CreateEventSource método. Deve ter direitos administrativos no computador para criar uma nova fonte de eventos.

Pode criar uma fonte de eventos para um registo de eventos existente ou para um novo registo de eventos. Quando crias uma nova fonte para um novo registo de eventos, o sistema regista a fonte desse registo, mas o registo só é criado quando a primeira entrada é escrita nele.

Cada fonte só pode escrever num registo de eventos de cada vez; No entanto, a sua aplicação pode usar múltiplas fontes para escrever em vários registos de eventos. Por exemplo, a sua aplicação pode precisar de múltiplas fontes configuradas para diferentes registos de eventos ou diferentes ficheiros de recursos.

Para alterar os detalhes de configuração de uma fonte existente, tem de apagar a fonte e depois criá-la com a nova configuração. Se outras aplicações ou componentes usarem a fonte existente, crie uma nova fonte com a configuração atualizada em vez de eliminar a fonte existente.

Pode registar a fonte do evento com recursos localizados para a sua categoria de evento e as cadeias de mensagens. A sua aplicação pode escrever entradas do registo de eventos usando identificadores de recursos, em vez de especificar a cadeia real. O Visualizador de Eventos usa o identificador de recurso para encontrar e mostrar a cadeia correspondente do ficheiro de recurso localizado com base nas definições de idioma atuais. Pode registar um ficheiro separado para categorias de eventos, mensagens e cadeias de inserção de parâmetros, ou pode registar o mesmo ficheiro de recurso para os três tipos de cadeias. Use as CategoryCountpropriedades , CategoryResourceFile, MessageResourceFile, e ParameterResourceFile para configurar a fonte e escrever entradas localizadas no registo de eventos. Se a sua aplicação escrever valores de cadeia diretamente no registo de eventos, não precisa de definir essas propriedades.

A fonte deve ser configurada para escrever entradas localizadas ou para escrever strings diretas. O WriteEntry método escreve a cadeia dada diretamente no registo de eventos; não utiliza um ficheiro de recurso de mensagem localizável. Use o WriteEvent método para escrever eventos usando um ficheiro de recurso de mensagem localizado.

Se a sua aplicação escrever entradas usando tanto identificadores de recursos como valores de cadeia, deve registar duas fontes separadas. Por exemplo, configure uma fonte com ficheiros de recursos e depois use essa fonte no WriteEvent método para escrever entradas usando identificadores de recurso no registo de eventos. Depois cria uma fonte diferente sem ficheiros de recurso e usa essa fonte no WriteEntry método para escrever cadeias diretamente no registo de eventos usando essa fonte.

Construtores

Name Description
EventSourceCreationData(String, String)

Inicializa uma nova instância da EventSourceCreationData classe com uma fonte de evento e um nome de registo de eventos especificados.

Propriedades

Name Description
CategoryCount

Obtém ou define o número de categorias no ficheiro de recurso da categoria.

CategoryResourceFile

Obtém ou define o caminho do ficheiro de recurso que contém as strings de categoria para a fonte.

LogName

Obtém ou define o nome do registo de eventos para o qual a fonte escreve entradas.

MachineName

Obtém ou define o nome do computador onde deve registar a fonte do evento.

MessageResourceFile

Obtém ou define o caminho do ficheiro de recurso da mensagem que contém as strings de formatação da mensagem para a fonte.

ParameterResourceFile

Obtém ou define o caminho do ficheiro de recurso que contém as strings de parâmetros da mensagem para a fonte.

Source

Obtém ou define o nome para se registar no registo de eventos como fonte de eventos.

Métodos

Name Description
Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetHashCode()

Serve como função de hash predefinida.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
MemberwiseClone()

Cria uma cópia superficial do atual Object.

(Herdado de Object)
ToString()

Devolve uma cadeia que representa o objeto atual.

(Herdado de Object)

Aplica-se a

Ver também