EventSourceCreationData Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
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) |