Compartilhar via


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 fonte de evento válida para gravar 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 fonte 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 fonte de evento válida para gravar entradas em um log no computador especificado. Esse método também pode ser usado para criar um novo log personalizado no computador especificado.

CreateEventSource(EventSourceCreationData)

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

Estabelece uma fonte de evento válida para gravar 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 no sourceData não é válido.

-ou-

O nome de origem especificado no sourceData é null.

-ou-

O nome de log especificado no 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 de log especificado no sourceData não é válido para a criação do 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 de origem especificado em sourceData resulta em um caminho de chave do Registro com mais de 254 caracteres.

-ou-

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

-ou-

O nome de origem especificado no sourceData já está registrado.

-ou-

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

A chave do Registro para o log de eventos não pôde ser aberta.

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 categoria, mensagem de evento e inserção de 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 método CreateEventSource usa as propriedades sourceDataSourcede entrada, LogName e MachineName para 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 propriedade LogName 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.

Nota

Para criar uma fonte 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 é gerado.

A partir do Windows Vista, o UAC (Controle de Conta de Usuário) determina os privilégios de um usuário. Se você for membro do grupo Administradores Internos, será atribuído dois tokens de acesso em tempo de execução: um token de acesso de usuário padrão e um token de acesso de 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 deseja executar como administrador.

Use WriteEvent e WriteEntry para gravar eventos em um log de eventos. Você deve especificar uma fonte de 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 fonte de evento durante a instalação do aplicativo. Isso permite tempo para o sistema operacional atualizar 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 método CreateEventSource. Você deve ter direitos administrativos no computador para criar uma nova fonte de evento.

Você pode criar uma fonte 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 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 propriedade Log 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 eventos, mensagens e cadeias de caracteres de inserção de parâmetro ou registrar o mesmo arquivo de recurso para todos os três tipos de cadeias de caracteres. Use as propriedades CategoryCount, 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 use essa origem no método WriteEvent 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 no método WriteEntry para gravar cadeias de caracteres diretamente no log de eventos usando essa origem.

Para alterar os detalhes de configuração de uma origem 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.

Nota

Se uma origem estiver configurada para um log de eventos e você reconfigurá-la 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
Origem:
EventLog.cs

Estabelece o nome de origem especificado como uma fonte 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 pelo qual o aplicativo está registrado no computador local.

logName
String

O nome do log no qual as entradas da origem 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 de log de eventos válido. Os nomes de log de eventos devem consistir em 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 de origem resulta em um caminho de chave do Registro com mais de 254 caracteres.

-ou-

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

-ou-

A origem 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.

A chave do Registro para o log de eventos não pôde ser aberta no computador local.

Exemplos

O exemplo a seguir cria o MySource de origem se 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 de aplicativos. 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.

Nota

Para criar uma fonte 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 é gerado.

No Windows Vista e posterior, o UAC (Controle de Conta de Usuário) determina os privilégios de um usuário. Se você for membro do grupo Administradores Internos, será atribuído dois tokens de acesso em tempo de execução: um token de acesso de usuário padrão e um token de acesso de 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 deseja executar como administrador.

Você só precisará criar uma fonte de 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 Sourceou um Log e MachineName.

Nota

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 fonte de 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 fonte de evento durante a instalação do aplicativo. Isso permite tempo para o sistema operacional atualizar 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 método CreateEventSource. Você deve ter direitos administrativos no computador para criar uma nova fonte de evento.

Você pode criar uma fonte 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 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 propriedade Log 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 use essa origem no método WriteEvent 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 no método WriteEntry para gravar cadeias de caracteres diretamente no log de eventos usando essa origem.

Para alterar os detalhes de configuração de uma origem 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.

Nota

Se uma origem já tiver sido mapeada para um log e você remapeá-la para um novo log, você deverá reiniciar 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
Origem:
EventLog.cs

Cuidado

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

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

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

public:
 static void CreateEventSource(System::String ^ source, System::String ^ logName, System::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")]
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.")>]
static member CreateEventSource : string * string * string -> unit
static member CreateEventSource : string * string * string -> unit
[<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
Public Shared Sub CreateEventSource (source As String, logName As String, machineName As String)

Parâmetros

source
String

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

logName
String

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

machineName
String

O nome do computador com o qual registrar essa fonte de evento ou "." para o computador local.

Atributos

Exceções

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

-ou-

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

-ou-

logName não é um nome de log de eventos válido. Os nomes de log de eventos devem consistir em 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 de origem resulta em um caminho de chave do Registro com mais de 254 caracteres.

-ou-

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

-ou-

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

-ou-

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

A chave do Registro para o log de eventos não pôde ser aberta no computador especificado.

Exemplos

O exemplo a seguir cria o MySource de origem 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 de aplicativos. 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 fonte de 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 Sourceou um Log e MachineName.

Nota

Para criar uma fonte 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 é gerado.

No Windows Vista e posterior, o UAC (Controle de Conta de Usuário) determina os privilégios de um usuário. Se você for membro do grupo Administradores Internos, será atribuído dois tokens de acesso em tempo de execução: um token de acesso de usuário padrão e um token de acesso de 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 deseja executar como administrador.

Use WriteEvent e WriteEntry para gravar eventos em um log de eventos. Você deve especificar uma fonte de 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 fonte de evento durante a instalação do aplicativo. Isso permite tempo para o sistema operacional atualizar 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 método CreateEventSource. Você deve ter direitos administrativos no computador para criar uma nova fonte de evento.

Você pode criar uma fonte 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 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 propriedade Log 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 use essa origem no método WriteEvent 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 no método WriteEntry para gravar cadeias de caracteres diretamente no log de eventos usando essa origem.

Para alterar os detalhes de configuração de uma origem 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.

Nota

Se uma origem já tiver sido mapeada para um log e você remapeá-la para um novo log, você deverá reiniciar o computador para que as alterações entrem em vigor.

Confira também

Aplica-se a