EventLog.CreateEventSource Método

Definição

Estabelece um aplicativo como capaz de gravar informações de evento em um log específico no sistema.

Sobrecargas

CreateEventSource(EventSourceCreationData)

Estabelece uma origem do evento válido para a gravação de mensagens de evento localizadas, usando as propriedades de configuração especificadas para a origem do evento e o log de eventos correspondente.

CreateEventSource(String, String)

Estabelece o nome de origem especificado como uma origem de evento válida para gravar entradas em um log no computador local. Esse método também pode criar um novo log personalizado no computador local.

CreateEventSource(String, String, String)
Obsoleto.
Obsoleto.
Obsoleto.

Estabelece o nome de origem especificado como uma origem de evento válida para gravar entradas em um log no computador especificado. Também é possível usar esse método para criar um novo log personalizado no computador especificado.

CreateEventSource(EventSourceCreationData)

Origem:
EventLog.cs
Origem:
EventLog.cs
Origem:
EventLog.cs

Estabelece uma origem do evento válido para a gravação de mensagens de evento localizadas, usando as propriedades de configuração especificadas para a origem do evento e o log de eventos correspondente.

public:
 static void CreateEventSource(System::Diagnostics::EventSourceCreationData ^ sourceData);
public static void CreateEventSource (System.Diagnostics.EventSourceCreationData sourceData);
static member CreateEventSource : System.Diagnostics.EventSourceCreationData -> unit
Public Shared Sub CreateEventSource (sourceData As EventSourceCreationData)

Parâmetros

sourceData
EventSourceCreationData

As propriedades de configuração para a origem do evento e seu log de eventos de destino.

Exceções

O nome do computador especificado em sourceData não é válido.

- ou -

O nome da origem especificado em sourceData é null.

- ou -

O nome do log especificado em sourceData não é válido. Os nomes de log de eventos devem consistir em caracteres imprimíveis e não podem incluir os caracteres '*', '?' ou '\'.

- ou -

O nome do log especificado em sourceData não é válido para a criação de log do usuário. Os nomes de log de eventos AppEvent, SysEvent e SecEvent são reservados para uso do sistema.

- ou -

O nome do log corresponde a um nome de origem de evento existente.

- ou -

O nome da origem especificado no sourceData resulta em um caminho de chave do Registro com mais de 254 caracteres.

- ou -

Os primeiros oito caracteres do nome do log especificado em sourceData não são exclusivos.

- ou -

O nome da origem especificado em sourceData já está registrado.

- ou -

O nome de origem especificado no sourceData corresponde a um nome de log de eventos existente.

Não foi possível abrir a chave do Registro para o log de eventos.

sourceData é null.

Exemplos

O exemplo a seguir determina se a origem do evento chamada SampleApplicationSource está registrada no computador local. Se a origem do evento não existir, o exemplo definirá o arquivo de recurso de mensagem para a origem e criará a nova origem do evento. Por fim, o exemplo define o nome de exibição localizado para o log de eventos, usando o valor do identificador de recurso em DisplayNameMsgId e o caminho do arquivo de recurso em messageFile.

void CreateEventSourceSample1( String^ messageFile )
{
   String^ myLogName;
   String^ sourceName = "SampleApplicationSource";
   
   // Create the event source if it does not exist.
   if (  !EventLog::SourceExists( sourceName ) )
   {
      
      // Create a new event source for the custom event log
      // named "myNewLog."  
      myLogName = "myNewLog";
      EventSourceCreationData ^ mySourceData = gcnew EventSourceCreationData( sourceName,myLogName );
      
      // Set the message resource file that the event source references.
      // All event resource identifiers correspond to text in this file.
      if (  !System::IO::File::Exists( messageFile ) )
      {
         Console::WriteLine( "Input message resource file does not exist - {0}", messageFile );
         messageFile = "";
      }
      else
      {
         
         // Set the specified file as the resource
         // file for message text, category text, and 
         // message parameter strings.  
         mySourceData->MessageResourceFile = messageFile;
         mySourceData->CategoryResourceFile = messageFile;
         mySourceData->CategoryCount = CategoryCount;
         mySourceData->ParameterResourceFile = messageFile;
         Console::WriteLine( "Event source message resource file set to {0}", messageFile );
      }

      Console::WriteLine( "Registering new source for event log." );
      EventLog::CreateEventSource( mySourceData );
   }
   else
   {
      
      // Get the event log corresponding to the existing source.
      myLogName = EventLog::LogNameFromSourceName( sourceName, "." );
   }

   
   // Register the localized name of the event log.
   // For example, the actual name of the event log is "myNewLog," but
   // the event log name displayed in the Event Viewer might be
   // "Sample Application Log" or some other application-specific
   // text.
   EventLog^ myEventLog = gcnew EventLog( myLogName,".",sourceName );
   if ( messageFile->Length > 0 )
   {
      myEventLog->RegisterDisplayName( messageFile, DisplayNameMsgId );
   }   
}
static void CreateEventSourceSample1(string messageFile)
{
    string myLogName;
    string sourceName = "SampleApplicationSource";

    // Create the event source if it does not exist.
    if(!EventLog.SourceExists(sourceName))
    {
        // Create a new event source for the custom event log
        // named "myNewLog."

        myLogName = "myNewLog";
        EventSourceCreationData mySourceData = new EventSourceCreationData(sourceName, myLogName);

        // Set the message resource file that the event source references.
        // All event resource identifiers correspond to text in this file.
        if (!System.IO.File.Exists(messageFile))
        {
            Console.WriteLine("Input message resource file does not exist - {0}",
                messageFile);
            messageFile = "";
        }
        else
        {
            // Set the specified file as the resource
            // file for message text, category text, and
            // message parameter strings.

            mySourceData.MessageResourceFile = messageFile;
            mySourceData.CategoryResourceFile = messageFile;
            mySourceData.CategoryCount = CategoryCount;
            mySourceData.ParameterResourceFile = messageFile;

            Console.WriteLine("Event source message resource file set to {0}",
                messageFile);
        }

        Console.WriteLine("Registering new source for event log.");
        EventLog.CreateEventSource(mySourceData);
    }
    else
    {
        // Get the event log corresponding to the existing source.
        myLogName = EventLog.LogNameFromSourceName(sourceName,".");
    }

    // Register the localized name of the event log.
    // For example, the actual name of the event log is "myNewLog," but
    // the event log name displayed in the Event Viewer might be
    // "Sample Application Log" or some other application-specific
    // text.
    EventLog myEventLog = new EventLog(myLogName, ".", sourceName);

    if (messageFile.Length > 0)
    {
        myEventLog.RegisterDisplayName(messageFile, DisplayNameMsgId);
    }
}
Public Shared Sub CreateEventSourceSample1(ByVal messageFile As String)

    Dim myLogName As String
    Dim sourceName As String = "SampleApplicationSource"

    ' Create the event source if it does not exist.
    If Not EventLog.SourceExists(sourceName)
    
        ' Create a new event source for the custom event log
        ' named "myNewLog."  

        myLogName = "myNewLog"
        Dim mySourceData As EventSourceCreationData = New EventSourceCreationData(sourceName, myLogName)

        ' Set the message resource file that the event source references.
        ' All event resource identifiers correspond to text in this file.
        If Not System.IO.File.Exists(messageFile)

            Console.WriteLine("Input message resource file does not exist - {0}", _
                messageFile)
            messageFile = ""
        Else 
            ' Set the specified file as the resource
            ' file for message text, category text and 
            ' message parameters strings.

            mySourceData.MessageResourceFile = messageFile
            mySourceData.CategoryResourceFile = messageFile
            mySourceData.CategoryCount = CategoryCount
            mySourceData.ParameterResourceFile = messageFile

            Console.WriteLine("Event source message resource file set to {0}", _
                messageFile)
        End If

        Console.WriteLine("Registering new source for event log.")
        EventLog.CreateEventSource(mySourceData)
    Else
        ' Get the event log corresponding to the existing source.
        myLogName = EventLog.LogNameFromSourceName(sourceName,".")
    End If

    ' Register the localized name of the event log.
    ' For example, the actual name of the event log is "myNewLog," but
    ' the event log name displayed in the Event Viewer might be
    ' "Sample Application Log" or some other application-specific
    ' text.
    Dim myEventLog As EventLog = New EventLog(myLogName, ".", sourceName)
    
    If messageFile.Length > 0
        myEventLog.RegisterDisplayName(messageFile, DisplayNameMsgId)
    End If
End Sub

O exemplo usa o arquivo de texto de mensagem a seguir, integrado à biblioteca de recursos EventLogMsgs.dll. Um arquivo de texto de mensagem é a origem da qual o arquivo de recurso de mensagem é criado. O arquivo de texto da mensagem define os identificadores de recurso e o texto para as cadeias de caracteres de inserção de categoria, mensagem de evento e parâmetro. Especificamente, o identificador de recurso 5001 é definido para o nome localizado do log de eventos.

; // EventLogMsgs.mc  
; // ********************************************************  

; // Use the following commands to build this file:  

; //   mc -s EventLogMsgs.mc  
; //   rc EventLogMsgs.rc  
; //   link /DLL /SUBSYSTEM:WINDOWS /NOENTRY /MACHINE:x86 EventLogMsgs.Res   
; // ********************************************************  

; // - Event categories -  
; // Categories must be numbered consecutively starting at 1.  
; // ********************************************************  

MessageId=0x1  
Severity=Success  
SymbolicName=INSTALL_CATEGORY  
Language=English  
Installation  
.  

MessageId=0x2  
Severity=Success  
SymbolicName=QUERY_CATEGORY  
Language=English  
Database Query  
.  

MessageId=0x3  
Severity=Success  
SymbolicName=REFRESH_CATEGORY  
Language=English  
Data Refresh  
.  

; // - Event messages -  
; // *********************************  

MessageId = 1000  
Severity = Success  
Facility = Application  
SymbolicName = AUDIT_SUCCESS_MESSAGE_ID_1000  
Language=English  
My application message text, in English, for message id 1000, called from %1.  
.  

MessageId = 1001  
Severity = Warning  
Facility = Application  
SymbolicName = AUDIT_FAILED_MESSAGE_ID_1001  
Language=English  
My application message text, in English, for message id 1001, called from %1.  
.  

MessageId = 1002  
Severity = Success  
Facility = Application  
SymbolicName = GENERIC_INFO_MESSAGE_ID_1002  
Language=English  
My generic information message in English, for message id 1002.  
.  

MessageId = 1003  
Severity = Warning  
Facility = Application  
SymbolicName = GENERIC_WARNING_MESSAGE_ID_1003  
Language=English  
My generic warning message in English, for message id 1003, called from %1.  
.  

MessageId = 1004  
Severity = Success  
Facility = Application  
SymbolicName = UPDATE_CYCLE_COMPLETE_MESSAGE_ID_1004  
Language=English  
The update cycle is complete for %%5002.  
.  

MessageId = 1005  
Severity = Warning  
Facility = Application  
SymbolicName = SERVER_CONNECTION_DOWN_MESSAGE_ID_1005  
Language=English  
The refresh operation did not complete because the connection to server %1 could not be established.  
.  

; // - Event log display name -  
; // ********************************************************  

MessageId = 5001  
Severity = Success  
Facility = Application  
SymbolicName = EVENT_LOG_DISPLAY_NAME_MSGID  
Language=English  
Sample Event Log  
.  

; // - Event message parameters -  
; //   Language independent insertion strings  
; // ********************************************************  

MessageId = 5002  
Severity = Success  
Facility = Application  
SymbolicName = EVENT_LOG_SERVICE_NAME_MSGID  
Language=English  
SVC_UPDATE.EXE  
.  

Comentários

Use essa sobrecarga para configurar uma nova fonte para gravar entradas em um log de eventos no computador local ou em um computador remoto. Não é necessário usar esse método para ler de um log de eventos.

O CreateEventSource método usa as propriedades e LogNameMachineName de entrada sourceDataSourcepara criar valores de registro no computador de destino para a nova origem e seu log de eventos associado. Um novo nome de origem não pode corresponder a um nome de origem existente ou a um nome de log de eventos existente no computador de destino. Se a LogName propriedade não estiver definida, a origem será registrada para o log de eventos do aplicativo. Se o MachineName não estiver definido, a origem será registrada no computador local.

Observação

Para criar uma origem de evento no Windows Vista e posterior ou no Windows Server 2003, você deve ter privilégios administrativos.

O motivo desse requisito é que todos os logs de eventos, incluindo a segurança, devem ser pesquisados para determinar se a origem do evento é exclusiva. A partir do Windows Vista, os usuários não têm permissão para acessar o log de segurança; portanto, um SecurityException é lançado.

A partir do Windows Vista, o UAC (Controle de Conta de Usuário) determina os privilégios de um usuário. Se for um membro do grupo Administradores Internos, você receberá dois tokens de acesso do tempo de execução: um token de acesso do usuário padrão e um token de acesso do administrador. Por padrão, você está na função de usuário padrão. Para executar o código que acessa o log de segurança, primeiro você deve elevar seus privilégios de usuário padrão para administrador. Você pode fazer isso ao iniciar um aplicativo, clicando com o botão direito do mouse no ícone do aplicativo e indicando que você deseja executar como administrador.

Use WriteEvent e WriteEntry para gravar eventos em um log de eventos. Você deve especificar uma origem do evento para gravar eventos; você deve criar e configurar a origem do evento antes de gravar a primeira entrada com a origem.

Crie a nova origem do evento durante a instalação do aplicativo. Isso permite que o sistema operacional atualize sua lista de fontes de eventos registradas e sua configuração. Se o sistema operacional não tiver atualizado sua lista de fontes de eventos e você tentar gravar um evento com a nova origem, a operação de gravação falhará. Você pode configurar uma nova fonte usando um EventLogInstallerou usando o CreateEventSource método . Você deve ter direitos administrativos no computador para criar uma nova origem do evento.

Você pode criar uma origem de evento para um log de eventos existente ou um novo log de eventos. Quando você cria uma nova fonte para um novo log de eventos, o sistema registra a origem desse log, mas o log não é criado até que a primeira entrada seja gravada nele.

O sistema operacional armazena os logs de eventos como arquivos. Quando você usa EventLogInstaller ou CreateEventSource para criar um novo log de eventos, o arquivo associado é armazenado no diretório %SystemRoot%\System32\Config no computador especificado. O nome do arquivo é definido acrescentando os primeiros 8 caracteres da Log propriedade com a extensão de nome de arquivo ".evt".

Cada fonte só pode gravar em um log de eventos por vez; no entanto, seu aplicativo pode usar várias fontes para gravar em vários logs de eventos. Por exemplo, seu aplicativo pode exigir várias fontes configuradas para logs de eventos diferentes ou arquivos de recursos diferentes.

Você pode registrar a origem do evento com arquivos de recurso localizados para sua categoria de evento e cadeias de caracteres de mensagem. Seu aplicativo pode gravar entradas de log de eventos usando identificadores de recurso, em vez de especificar a cadeia de caracteres real. O Visualizador de Eventos usa o identificador de recurso para localizar e exibir a cadeia de caracteres correspondente do arquivo de recurso localizado com base nas configurações de idioma atuais. Você pode registrar um arquivo separado para categorias de evento, mensagens e cadeias de caracteres de inserção de parâmetros ou pode registrar o mesmo arquivo de recurso para todos os três tipos de cadeias de caracteres. Use as CategoryCountpropriedades , CategoryResourceFile, MessageResourceFilee ParameterResourceFile para configurar a origem para gravar entradas localizadas no log de eventos. Se o aplicativo gravar valores de cadeias de caracteres diretamente no log de eventos, você não precisará definir essas propriedades.

A origem deve ser configurada para gravar entradas localizadas ou para gravar cadeias de caracteres diretas. Se o aplicativo gravar entradas usando identificadores de recurso e valores de cadeia de caracteres, você deverá registrar duas fontes separadas. Por exemplo, configure uma fonte com arquivos de recurso e, em seguida, use essa origem WriteEvent no método para gravar entradas usando identificadores de recurso no log de eventos. Em seguida, crie uma fonte diferente sem arquivos de recurso e use essa origem WriteEntry no método para gravar cadeias de caracteres diretamente no log de eventos usando essa origem.

Para alterar os detalhes de configuração de uma fonte existente, você deve excluir a origem e, em seguida, criá-la com a nova configuração. Se outros aplicativos ou componentes usarem a origem existente, crie uma nova fonte com a configuração atualizada em vez de excluir a origem existente.

Observação

Se uma origem estiver configurada para um log de eventos e você reconfigurá-lo para outro log de eventos, reinicie o computador para que as alterações entrem em vigor.

Confira também

Aplica-se a

CreateEventSource(String, String)

Origem:
EventLog.cs
Origem:
EventLog.cs
Origem:
EventLog.cs

Estabelece o nome de origem especificado como uma origem de evento válida para gravar entradas em um log no computador local. Esse método também pode criar um novo log personalizado no computador local.

public:
 static void CreateEventSource(System::String ^ source, System::String ^ logName);
public static void CreateEventSource (string source, string logName);
static member CreateEventSource : string * string -> unit
Public Shared Sub CreateEventSource (source As String, logName As String)

Parâmetros

source
String

O nome de origem com o qual o aplicativo está registrado no computador local.

logName
String

O nome do log no qual as entradas da fonte são gravadas. Os valores possíveis incluem Aplicativo, Sistema ou um log de eventos personalizado.

Exceções

source é uma cadeia de caracteres vazia ("") ou null.

- ou -

logName não é um nome válido de log de eventos. Os nomes de log de eventos devem conter caracteres imprimíveis e não podem incluir os caracteres “*”, “?” ou “\”.

- ou -

logName não é válido para a criação de log de usuário. Os nomes de log de eventos AppEvent, SysEvent e SecEvent são reservados para uso do sistema.

- ou -

O nome do log corresponde a um nome de origem de evento existente.

- ou -

O nome da origem resulta em um caminho de chave do Registro com mais de 254 caracteres.

- ou -

Os 8 primeiros caracteres de logName correspondem aos 8 primeiros caracteres de um log de eventos existente.

- ou -

A fonte não pode ser registrada porque já existe no computador local.

- ou -

O nome de origem corresponde a um nome de log de eventos existente.

Não foi possível abrir a chave do Registro do log de eventos no computador local.

Exemplos

O exemplo a seguir cria a origem MySource se ela ainda não existir e grava uma entrada no log de eventos MyNewLog.

#using <System.dll>

using namespace System;
using namespace System::Diagnostics;
using namespace System::Threading;
int main()
{
   
   // Create the source, if it does not already exist.
   if (  !EventLog::SourceExists( "MySource" ) )
   {
      //An event log source should not be created and immediately used.
      //There is a latency time to enable the source, it should be created
      //prior to executing the application that uses the source.
      //Execute this sample a second time to use the new source.
      EventLog::CreateEventSource( "MySource", "MyNewLog" );
      Console::WriteLine( "CreatingEventSource" );
      // The source is created.  Exit the application to allow it to be registered.
      return 0;
   }

   
   // Create an EventLog instance and assign its source.
   EventLog^ myLog = gcnew EventLog;
   myLog->Source = "MySource";
   
   // Write an informational entry to the event log.    
   myLog->WriteEntry( "Writing to event log." );
}
using System;
using System.Diagnostics;
using System.Threading;

class MySample{

    public static void Main(){

        // Create the source, if it does not already exist.
        if(!EventLog.SourceExists("MySource"))
        {
             //An event log source should not be created and immediately used.
             //There is a latency time to enable the source, it should be created
             //prior to executing the application that uses the source.
             //Execute this sample a second time to use the new source.
            EventLog.CreateEventSource("MySource", "MyNewLog");
            Console.WriteLine("CreatedEventSource");
            Console.WriteLine("Exiting, execute the application a second time to use the source.");
            // The source is created.  Exit the application to allow it to be registered.
            return;
        }

        // Create an EventLog instance and assign its source.
        EventLog myLog = new EventLog();
        myLog.Source = "MySource";

        // Write an informational entry to the event log.
        myLog.WriteEntry("Writing to event log.");
    }
}
Option Explicit
Option Strict

Imports System.Diagnostics
Imports System.Threading

Class MySample
    Public Shared Sub Main()
        
        If Not EventLog.SourceExists("MySource") Then
            ' Create the source, if it does not already exist.
            ' An event log source should not be created and immediately used.
            ' There is a latency time to enable the source, it should be created
            ' prior to executing the application that uses the source.
            ' Execute this sample a second time to use the new source.
            EventLog.CreateEventSource("MySource", "MyNewLog")
            Console.WriteLine("CreatingEventSource")
            'The source is created.  Exit the application to allow it to be registered.
            Return
        End If
        
        ' Create an EventLog instance and assign its source.
        Dim myLog As New EventLog()
        myLog.Source = "MySource"
        
        ' Write an informational entry to the event log.    
        myLog.WriteEntry("Writing to event log.")
    End Sub
End Class

Comentários

Use essa sobrecarga para criar um log personalizado ou para criar e registrar um Source em um log existente no computador local.

Se logName for null ou uma cadeia de caracteres vazia ("") quando você chamar CreateEventSource, o log usará como padrão o log do aplicativo. Se o log não existir no computador local, o sistema criará um log personalizado e registrará seu aplicativo como um Source para esse log.

Observação

Para criar uma origem de evento no Windows Vista e posterior ou no Windows Server 2003, você deve ter privilégios administrativos.

O motivo desse requisito é que todos os logs de eventos, incluindo a segurança, devem ser pesquisados para determinar se a origem do evento é exclusiva. A partir do Windows Vista, os usuários não têm permissão para acessar o log de segurança; portanto, um SecurityException é lançado.

No Windows Vista e posterior, UAC (Controle de Conta de Usuário) determina os privilégios de um usuário. Se for um membro do grupo Administradores Internos, você receberá dois tokens de acesso do tempo de execução: um token de acesso do usuário padrão e um token de acesso do administrador. Por padrão, você está na função de usuário padrão. Para executar o código que acessa o log de segurança, primeiro você deve elevar seus privilégios de usuário padrão para administrador. Você pode fazer isso ao iniciar um aplicativo, clicando com o botão direito do mouse no ícone do aplicativo e indicando que você deseja executar como administrador.

Você só precisará criar uma origem do evento se estiver gravando no log de eventos. Antes de gravar uma entrada em um log de eventos, você deve registrar a origem do evento com o log de eventos como uma fonte válida de eventos. Quando você grava uma entrada de log, o sistema usa o Source para localizar o log apropriado no qual colocar sua entrada. Se você estiver lendo o log de eventos, poderá especificar o Source, ou um Log e MachineName.

Observação

Você não precisará especificar o MachineName se estiver se conectando a um log no computador local. Se você não especificar o MachineName ao ler de um log, o computador local (".") será assumido.

Use WriteEvent e WriteEntry para gravar eventos em um log de eventos. Você deve especificar uma origem do evento para gravar eventos; você deve criar e configurar a origem do evento antes de gravar a primeira entrada com a origem.

Crie a nova origem do evento durante a instalação do aplicativo. Isso permite que o sistema operacional atualize sua lista de fontes de eventos registradas e sua configuração. Se o sistema operacional não tiver atualizado sua lista de fontes de eventos e você tentar gravar um evento com a nova origem, a operação de gravação falhará. Você pode configurar uma nova fonte usando um EventLogInstallerou usando o CreateEventSource método . Você deve ter direitos administrativos no computador para criar uma nova origem do evento.

Você pode criar uma origem de evento para um log de eventos existente ou um novo log de eventos. Quando você cria uma nova fonte para um novo log de eventos, o sistema registra a origem desse log, mas o log não é criado até que a primeira entrada seja gravada nele.

O sistema operacional armazena os logs de eventos como arquivos. Quando você usa EventLogInstaller ou CreateEventSource para criar um novo log de eventos, o arquivo associado é armazenado no diretório %SystemRoot%\System32\Config no computador especificado. O nome do arquivo é definido acrescentando os primeiros 8 caracteres da Log propriedade com a extensão de nome de arquivo ".evt".

A origem deve ser exclusiva no computador local; um novo nome de origem não pode corresponder a um nome de origem existente ou a um nome de log de eventos existente. Cada fonte pode gravar em apenas um log de eventos por vez; no entanto, seu aplicativo pode usar várias fontes para gravar em vários logs de eventos. Por exemplo, seu aplicativo pode exigir várias fontes configuradas para logs de eventos diferentes ou arquivos de recursos diferentes.

A origem deve ser configurada para gravar entradas localizadas ou para gravar cadeias de caracteres diretas. Se o aplicativo gravar entradas usando identificadores de recurso e valores de cadeia de caracteres, você deverá registrar duas fontes separadas. Por exemplo, configure uma fonte com arquivos de recurso e, em seguida, use essa origem WriteEvent no método para gravar entradas usando identificadores de recurso no log de eventos. Em seguida, crie uma fonte diferente sem arquivos de recurso e use essa origem WriteEntry no método para gravar cadeias de caracteres diretamente no log de eventos usando essa origem.

Para alterar os detalhes de configuração de uma fonte existente, você deve excluir a origem e, em seguida, criá-la com a nova configuração. Se outros aplicativos ou componentes usarem a origem existente, crie uma nova fonte com a configuração atualizada em vez de excluir a origem existente.

Observação

Se uma fonte já tiver sido mapeada para um log e você o remapear para um novo log, reinicie o computador para que as alterações entrem em vigor.

Confira também

Aplica-se a

CreateEventSource(String, String, String)

Origem:
EventLog.cs
Origem:
EventLog.cs
Origem:
EventLog.cs

Cuidado

This method has been deprecated. Please use System.Diagnostics.EventLog.CreateEventSource(EventSourceCreationData sourceData) instead. http://go.microsoft.com/fwlink/?linkid=14202

Cuidado

This method has been deprecated. Please use System.Diagnostics.EventLog.CreateEventSource(EventSourceCreationData sourceData) instead. https://go.microsoft.com/fwlink/?linkid=14202

Cuidado

EventLog.CreateEventSource has been deprecated. Use System.Diagnostics.EventLog.CreateEventSource(EventSourceCreationData sourceData) instead.

Estabelece o nome de origem especificado como uma origem de evento válida para gravar entradas em um log no computador especificado. Também é possível usar esse método para criar um novo log personalizado no computador especificado.

public:
 static void CreateEventSource(System::String ^ source, System::String ^ logName, System::String ^ machineName);
[System.Obsolete("This method has been deprecated.  Please use System.Diagnostics.EventLog.CreateEventSource(EventSourceCreationData sourceData) instead.  http://go.microsoft.com/fwlink/?linkid=14202")]
public static void CreateEventSource (string source, string logName, string machineName);
[System.Obsolete("This method has been deprecated.  Please use System.Diagnostics.EventLog.CreateEventSource(EventSourceCreationData sourceData) instead.  https://go.microsoft.com/fwlink/?linkid=14202")]
public static void CreateEventSource (string source, string logName, string machineName);
[System.Obsolete("EventLog.CreateEventSource has been deprecated. Use System.Diagnostics.EventLog.CreateEventSource(EventSourceCreationData sourceData) instead.")]
public static void CreateEventSource (string source, string logName, string machineName);
public static void CreateEventSource (string source, string logName, string machineName);
[<System.Obsolete("This method has been deprecated.  Please use System.Diagnostics.EventLog.CreateEventSource(EventSourceCreationData sourceData) instead.  http://go.microsoft.com/fwlink/?linkid=14202")>]
static member CreateEventSource : string * string * string -> unit
[<System.Obsolete("This method has been deprecated.  Please use System.Diagnostics.EventLog.CreateEventSource(EventSourceCreationData sourceData) instead.  https://go.microsoft.com/fwlink/?linkid=14202")>]
static member CreateEventSource : string * string * string -> unit
[<System.Obsolete("EventLog.CreateEventSource has been deprecated. Use System.Diagnostics.EventLog.CreateEventSource(EventSourceCreationData sourceData) instead.")>]
static member CreateEventSource : string * string * string -> unit
static member CreateEventSource : string * string * string -> unit
Public Shared Sub CreateEventSource (source As String, logName As String, machineName As String)

Parâmetros

source
String

A fonte pela qual o aplicativo está registrado no computador especificado.

logName
String

O nome do log no qual as entradas da fonte são gravadas. Os valores possíveis incluem Aplicativo, Sistema ou um log de eventos personalizado. Se você não especificar um valor, logName o definirá com o padrão Aplicativo.

machineName
String

O nome do computador que registrará essa origem de evento ou "." para o computador local.

Atributos

Exceções

machineName não é um nome do computador válido.

- ou -

source é uma cadeia de caracteres vazia ("") ou null.

- ou -

logName não é um nome válido de log de eventos. Os nomes de log de eventos devem conter caracteres imprimíveis e não podem incluir os caracteres “*”, “?” ou “\”.

- ou -

logName não é válido para a criação de log de usuário. Os nomes de log de eventos AppEvent, SysEvent e SecEvent são reservados para uso do sistema.

- ou -

O nome do log corresponde a um nome de origem de evento existente.

- ou -

O nome da origem resulta em um caminho de chave do Registro com mais de 254 caracteres.

- ou -

Os oito primeiros caracteres de logName correspondem aos oito primeiros caracteres de um log de eventos existente no computador especificado.

- ou -

A origem não pode ser registrada porque já existe no computador especificado.

- ou -

O nome da origem corresponde a um nome de origem de evento existente.

Não foi possível abrir a chave do Registro do log de eventos no computador especificado.

Exemplos

O exemplo a seguir cria a origem MySource no computador MyServere grava uma entrada no log de eventos MyNewLog.

#using <System.dll>

using namespace System;
using namespace System::Diagnostics;
using namespace System::Threading;
int main()
{
   
   // Create the source, if it does not already exist.
   if (  !EventLog::SourceExists( "MySource", "MyServer" ) )
   {
      EventLog::CreateEventSource( "MySource", "MyNewLog", "MyServer" );
      Console::WriteLine( "CreatingEventSource" );
   }

   
   // Create an EventLog instance and assign its source.
   EventLog^ myLog = gcnew EventLog;
   myLog->Source = "MySource";
   
   // Write an informational entry to the event log.    
   myLog->WriteEntry( "Writing to event log." );
   Console::WriteLine( "Message written to event log." );
}
using System;
using System.Diagnostics;
using System.Threading;

class MySample{

    public static void Main(){

        // Create the source, if it does not already exist.
        if(!EventLog.SourceExists("MySource", "MyServer"))
        {
            // An event log source should not be created and immediately used.
            // There is a latency time to enable the source, it should be created
            // prior to executing the application that uses the source.
            // Execute this sample a second time to use the new source.
            EventLog.CreateEventSource("MySource", "MyNewLog", "MyServer");
            Console.WriteLine("CreatingEventSource");
            Console.WriteLine("Exiting, execute the application a second time to use the source.");
            // The source is created.  Exit the application to allow it to be registered.
            return;
        }

        // Create an EventLog instance and assign its source.
        EventLog myLog = new EventLog();
        myLog.Source = "MySource";

        // Write an informational entry to the event log.
        myLog.WriteEntry("Writing to event log.");

        Console.WriteLine("Message written to event log.");
    }
}
Imports System.Diagnostics
Imports System.Threading

Class MySample
    Public Shared Sub Main()
        ' Create the source, if it does not already exist.
        If Not EventLog.SourceExists("MySource", "MyServer") Then
            EventLog.CreateEventSource("MySource", "MyNewLog", "MyServer")
            Console.WriteLine("CreatingEventSource")
        End If
        
        ' Create an EventLog instance and assign its source.
        Dim myLog As New EventLog()
        myLog.Source = "MySource"
        
        ' Write an informational entry to the event log.    
        myLog.WriteEntry("Writing to event log.")
        
        Console.WriteLine("Message written to event log.")
    End Sub
End Class

Comentários

Use essa sobrecarga para criar um log personalizado ou para criar e registrar um Source em um log existente no computador especificado.

Se logName for null ou uma cadeia de caracteres vazia ("") quando você chamar CreateEventSource, o log usará como padrão o log do aplicativo. Se o log não existir no computador especificado, o sistema criará um log personalizado e registrará seu aplicativo como um Source para esse log.

Você só precisará criar uma origem do evento se estiver gravando no log de eventos. Antes de gravar uma entrada em um log de eventos, você deve registrar a origem do evento com o log de eventos como uma fonte válida de eventos. Quando você grava uma entrada de log, o sistema usa o Source para localizar o log apropriado no qual colocar sua entrada. Se você estiver lendo o log de eventos, poderá especificar o Source, ou um Log e MachineName.

Observação

Para criar uma origem de evento no Windows Vista e posterior ou no Windows Server 2003, você deve ter privilégios administrativos.

O motivo desse requisito é que todos os logs de eventos, incluindo a segurança, devem ser pesquisados para determinar se a origem do evento é exclusiva. No Windows Vista e posterior, os usuários não têm permissão para acessar o log de segurança; portanto, um SecurityException é lançado.

No Windows Vista e posterior, UAC (Controle de Conta de Usuário) determina os privilégios de um usuário. Se for um membro do grupo Administradores Internos, você receberá dois tokens de acesso do tempo de execução: um token de acesso do usuário padrão e um token de acesso do administrador. Por padrão, você está na função de usuário padrão. Para executar o código que acessa o log de segurança, primeiro você deve elevar seus privilégios de usuário padrão para administrador. Você pode fazer isso ao iniciar um aplicativo, clicando com o botão direito do mouse no ícone do aplicativo e indicando que você deseja executar como administrador.

Use WriteEvent e WriteEntry para gravar eventos em um log de eventos. Você deve especificar uma origem do evento para gravar eventos; você deve criar e configurar a origem do evento antes de gravar a primeira entrada com a origem.

Crie a nova origem do evento durante a instalação do aplicativo. Isso permite que o sistema operacional atualize sua lista de fontes de eventos registradas e sua configuração. Se o sistema operacional não tiver atualizado sua lista de fontes de eventos e você tentar gravar um evento com a nova origem, a operação de gravação falhará. Você pode configurar uma nova fonte usando um EventLogInstallerou usando o CreateEventSource método . Você deve ter direitos administrativos no computador para criar uma nova origem do evento.

Você pode criar uma origem de evento para um log de eventos existente ou um novo log de eventos. Quando você cria uma nova fonte para um novo log de eventos, o sistema registra a origem desse log, mas o log não é criado até que a primeira entrada seja gravada nele.

O sistema operacional armazena os logs de eventos como arquivos. Quando você usa EventLogInstaller ou CreateEventSource para criar um novo log de eventos, o arquivo associado é armazenado no diretório %SystemRoot%\System32\Config no computador especificado. O nome do arquivo é definido acrescentando os primeiros 8 caracteres da Log propriedade com a extensão de nome de arquivo ".evt".

A origem deve ser exclusiva no computador local; um novo nome de origem não pode corresponder a um nome de origem existente ou a um nome de log de eventos existente. Cada fonte pode gravar em apenas um log de eventos por vez; no entanto, seu aplicativo pode usar várias fontes para gravar em vários logs de eventos. Por exemplo, seu aplicativo pode exigir várias fontes configuradas para logs de eventos diferentes ou arquivos de recursos diferentes.

A origem deve ser configurada para gravar entradas localizadas ou para gravar cadeias de caracteres diretas. Se o aplicativo gravar entradas usando identificadores de recurso e valores de cadeia de caracteres, você deverá registrar duas fontes separadas. Por exemplo, configure uma fonte com arquivos de recurso e, em seguida, use essa origem WriteEvent no método para gravar entradas usando identificadores de recurso no log de eventos. Em seguida, crie uma fonte diferente sem arquivos de recurso e use essa origem WriteEntry no método para gravar cadeias de caracteres diretamente no log de eventos usando essa origem.

Para alterar os detalhes de configuração de uma fonte existente, você deve excluir a origem e, em seguida, criá-la com a nova configuração. Se outros aplicativos ou componentes usarem a origem existente, crie uma nova fonte com a configuração atualizada em vez de excluir a origem existente.

Observação

Se uma fonte já tiver sido mapeada para um log e você o remapear para um novo log, reinicie o computador para que as alterações entrem em vigor.

Confira também

Aplica-se a