EventLog.CreateEventSource Метод

Определение

Задает приложение как источник записей для определенного журнала событий в системе.

Перегрузки

CreateEventSource(EventSourceCreationData)

Задает допустимый источник событий для записи локализованных сообщений о событиях, используя указанные свойства конфигурации источника событий и соответствующий журнал событий.

CreateEventSource(String, String)

Задает указанное имя источника в качестве допустимого источника событий для внесения записей в журнал на локальном компьютере. Используя этот метод, можно также создать новый пользовательский журнал на локальном компьютере.

CreateEventSource(String, String, String)
Устаревшие..
Устаревшие..
Устаревшие..

Устанавливает заданное имяисточника в качестве допустимого источника событий для внесения записей в журнал на указанном компьютере. Этот метод можно также использовать для создания нового пользовательского журнала на заданном компьютере.

CreateEventSource(EventSourceCreationData)

Source:
EventLog.cs
Source:
EventLog.cs
Source:
EventLog.cs

Задает допустимый источник событий для записи локализованных сообщений о событиях, используя указанные свойства конфигурации источника событий и соответствующий журнал событий.

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)

Параметры

sourceData
EventSourceCreationData

Свойства конфигурации для источника событий и его целевого журнала событий.

Исключения

Имя компьютера, заданное в sourceData, недопустимо.

-или-

Имя источника, указанное в параметре sourceData, равно null.

-или-

Имя журнала, заданное в sourceData недопустимо. Имена журналов событий должны состоять из печатных символов и не могут содержать символы "*", "?", "\".

-или-

Имя журнала, заданное в sourceData, недопустимо для создания пользовательского журнала. Имена AppEvent, SysEvent и SecEvent зарезервированы для системного использования.

-или-

Имя журнала совпадает с существующим именем источника событий.

-или-

При таком имени источника, заданном в sourceData, длина пути к разделу реестра превышает 254 символа.

-или-

Первые 8 символов имени журнала, заданные в sourceData, не уникальны.

-или-

Имя источника, заданное в sourceData, уже зарегистрировано.

-или-

Имя источника, заданное в sourceData, совпадает с существующим именем журнала событий.

Не удается открыть раздел реестра для журнала событий.

sourceData имеет значение null.

Примеры

В следующем примере определяется, зарегистрирован ли источник события с именем SampleApplicationSource на локальном компьютере. Если источник события не существует, в примере задается файл ресурсов сообщения для источника и создается новый источник события. Наконец, в примере задается локализованное отображаемое имя для журнала событий, используя значение идентификатора ресурса в DisplayNameMsgId и путь к файлу ресурса в 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

В примере используется следующий текстовый файл сообщения, встроенный в библиотеку ресурсов EventLogMsgs.dll. Текстовый файл сообщения — это источник, из которого создается файл ресурсов сообщения. Текстовый файл сообщения определяет идентификаторы ресурсов и текст для категорий, сообщений о событии и строк вставки параметров. В частности, идентификатор ресурса 5001 определяется для локализованного имени журнала событий.

; // 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  
.  

Комментарии

Используйте эту перегрузку, чтобы настроить новый источник для записи записей в журнал событий на локальном или удаленном компьютере. Этот метод не требуется использовать для чтения из журнала событий.

Метод CreateEventSource использует входные sourceDataSourceсвойства и MachineName для LogName создания значений реестра на целевом компьютере для нового источника и связанного с ним журнала событий. Новое имя источника не может соответствовать существующему имени источника или имени существующего журнала событий на целевом компьютере. LogName Если свойство не задано, источник регистрируется для журнала событий приложения. MachineName Если параметр не задан, источник регистрируется на локальном компьютере.

Примечание

Чтобы создать источник событий в Windows Vista и более поздних версиях или Windows Server 2003, необходимо иметь права администратора.

Это требование заключается в том, что все журналы событий, включая безопасность, должны выполняться поиск, чтобы определить, является ли источник событий уникальным. Начиная с Windows Vista, у пользователей нет разрешения на доступ к журналу безопасности; поэтому возникает SecurityException исключение .

Начиная с Windows Vista контроль учетных записей (UAC) определяет привилегии пользователя. Члену встроенной группы "Администраторы" присваивается два маркера доступа на время выполнения: маркер доступа обычного пользователя и маркер доступа администратора. По умолчанию назначена роль обычного пользователя. Чтобы выполнить код, который обращается к журналу безопасности, необходимо сначала повысить привилегии от обычного пользователя до администратора. Это можно сделать при запуске приложения, , щелкнув значок приложения правой кнопкой мыши и указав, что приложение должно запускаться от имени администратора.

Используйте WriteEvent и WriteEntry для записи событий в журнал событий. Для записи событий необходимо указать источник событий; Необходимо создать и настроить источник событий перед записью первой записи с помощью источника.

Создайте источник событий во время установки приложения. Это позволяет операционной системе обновить список зарегистрированных источников событий и их конфигурацию. Если операционная система не обновила список источников событий и вы попытаелись записать событие с новым источником, операция записи завершится ошибкой. Вы можете настроить новый источник с помощью EventLogInstallerили с помощью CreateEventSource метода . Для создания нового источника событий необходимо иметь права администратора на компьютере.

Вы можете создать источник событий для существующего или нового журнала событий. При создании нового источника для нового журнала событий система регистрирует источник для этого журнала, но журнал не создается до тех пор, пока в него не будет записана первая запись.

Журналы событий сохраняются операционной системой как файлы. При использовании EventLogInstaller или CreateEventSource для создания нового журнала событий связанный файл хранится в каталоге %SystemRoot%\System32\Config на указанном компьютере. Имя файла задается путем добавления первых Log 8 символов свойства с расширением имени файла .evt.

Каждый источник может записывать только в один журнал событий одновременно; однако приложение может использовать несколько источников для записи в несколько журналов событий. Например, приложению может потребоваться несколько источников, настроенных для разных журналов событий или разных файлов ресурсов.

Вы можете зарегистрировать источник событий с помощью локализованных файлов ресурсов для категорий событий и строк сообщений. Приложение может записывать записи журнала событий с помощью идентификаторов ресурсов, а не указывать фактическую строку. Просмотр событий использует идентификатор ресурса для поиска и отображения соответствующей строки из локализованного файла ресурсов на основе текущих языковых параметров. Вы можете зарегистрировать отдельный файл для категорий событий, сообщений и строк вставки параметров или один и тот же файл ресурсов для всех трех типов строк. CategoryCountИспользуйте свойства , CategoryResourceFile, MessageResourceFileи ParameterResourceFile , чтобы настроить источник для записи локализованных записей в журнал событий. Если приложение записывает строковые значения непосредственно в журнал событий, задавать эти свойства не нужно.

Источник должен быть настроен для записи локализованных записей или для записи прямых строк. Если приложение записывает записи с использованием идентификаторов ресурсов и строковых значений, необходимо зарегистрировать два отдельных источника. Например, настройте один источник с файлами ресурсов, а затем используйте этот источник в методе WriteEvent для записи записей с помощью идентификаторов ресурсов в журнал событий. Затем создайте другой источник без файлов ресурсов и используйте этот источник в методе WriteEntry для записи строк непосредственно в журнал событий с помощью этого источника.

Чтобы изменить сведения о конфигурации существующего источника, необходимо удалить источник, а затем создать его с новой конфигурацией. Если другие приложения или компоненты используют существующий источник, создайте новый источник с обновленной конфигурацией, а не удаляйте существующий источник.

Примечание

Если источник настроен для журнала событий и вы перенастроили его для другого журнала событий, необходимо перезагрузить компьютер, чтобы изменения вступили в силу.

См. также раздел

Применяется к

CreateEventSource(String, String)

Source:
EventLog.cs
Source:
EventLog.cs
Source:
EventLog.cs

Задает указанное имя источника в качестве допустимого источника событий для внесения записей в журнал на локальном компьютере. Используя этот метод, можно также создать новый пользовательский журнал на локальном компьютере.

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)

Параметры

source
String

Имя источника, по которому приложение регистрируется на локальном компьютере.

logName
String

Имя журнала, в который вносятся записи о событиях источника. Допустимые значения: Application, System или имя пользовательского журнала событий.

Исключения

source является пустой строкой ("") или null.

-или-

logName не является допустимым именем журнала событий. Имена журналов событий должны состоять из печатных символов и не могут содержать символы "*", "?", "\".

-или-

Значение logName недопустимо для создания журнала пользователя. Имена AppEvent, SysEvent и SecEvent зарезервированы для системного использования.

-или-

Имя журнала совпадает с существующим именем источника событий.

-или-

При таком имени источника длина пути к разделу реестра превышает 254 символа.

-или-

Первые 8 символов logName совпадают с первыми 8 символами имени существующего журнала событий.

-или-

Невозможно зарегистрировать источник, поскольку он уже существует на локальном компьютере.

-или-

Имя источника совпадает с существующим именем журнала событий.

Раздел реестра для журнала событий не может быть открыт на локальном компьютере.

Примеры

В следующем примере создается источник MySource , если он еще не существует, и записывается запись в журнал 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

Комментарии

Используйте эту перегрузку для создания пользовательского журнала или для создания и регистрации Source в существующем журнале на локальном компьютере.

Если logName имеет значение null или пустая строка (""), при вызове CreateEventSourceв журнале по умолчанию используется журнал приложений. Если журнал не существует на локальном компьютере, система создает пользовательский журнал и регистрирует приложение в качестве Source для этого журнала.

Примечание

Чтобы создать источник событий в Windows Vista и более поздних версиях или Windows Server 2003, необходимо иметь права администратора.

Это требование заключается в том, что все журналы событий, включая безопасность, должны выполняться поиск, чтобы определить, является ли источник событий уникальным. Начиная с Windows Vista, у пользователей нет разрешения на доступ к журналу безопасности; поэтому возникает SecurityException исключение .

В Windows Vista и более поздних версиях права доступа пользователя определяются контролем учетных записей. Члену встроенной группы "Администраторы" присваивается два маркера доступа на время выполнения: маркер доступа обычного пользователя и маркер доступа администратора. По умолчанию назначена роль обычного пользователя. Чтобы выполнить код, который обращается к журналу безопасности, необходимо сначала повысить привилегии от обычного пользователя до администратора. Это можно сделать при запуске приложения, , щелкнув значок приложения правой кнопкой мыши и указав, что приложение должно запускаться от имени администратора.

Создать источник событий нужно только при записи в журнал событий. Перед записью записи в журнал событий необходимо зарегистрировать источник событий в журнале событий в качестве допустимого источника событий. При записи журнала система использует Source для поиска соответствующего журнала, в котором будет размещаться запись. При чтении журнала событий можно указать Sourceлибо , либо Log и MachineName.

Примечание

При подключении MachineName к журналу на локальном компьютере указывать не требуется. Если не указать при чтении MachineName из журнала, предполагается локальный компьютер (".").

Используйте WriteEvent и WriteEntry для записи событий в журнал событий. Для записи событий необходимо указать источник событий; Необходимо создать и настроить источник событий перед записью первой записи с помощью источника.

Создайте источник событий во время установки приложения. Это позволяет операционной системе обновить список зарегистрированных источников событий и их конфигурацию. Если операционная система не обновила список источников событий и вы попытаелись записать событие с новым источником, операция записи завершится ошибкой. Вы можете настроить новый источник с помощью EventLogInstallerили с помощью CreateEventSource метода . Для создания нового источника событий необходимо иметь права администратора на компьютере.

Вы можете создать источник событий для существующего или нового журнала событий. При создании нового источника для нового журнала событий система регистрирует источник для этого журнала, но журнал не создается до тех пор, пока в него не будет записана первая запись.

Журналы событий сохраняются операционной системой как файлы. При использовании EventLogInstaller или CreateEventSource для создания нового журнала событий связанный файл хранится в каталоге %SystemRoot%\System32\Config на указанном компьютере. Имя файла задается путем добавления первых Log 8 символов свойства с расширением имени файла .evt.

Источник должен быть уникальным на локальном компьютере; Новое имя источника не может соответствовать существующему имени источника или имени существующего журнала событий. Каждый источник может записывать данные только в один журнал событий одновременно; однако приложение может использовать несколько источников для записи в несколько журналов событий. Например, приложению может потребоваться несколько источников, настроенных для разных журналов событий или разных файлов ресурсов.

Источник должен быть настроен для записи локализованных записей или для записи прямых строк. Если приложение записывает записи с использованием идентификаторов ресурсов и строковых значений, необходимо зарегистрировать два отдельных источника. Например, настройте один источник с файлами ресурсов, а затем используйте этот источник в методе WriteEvent для записи записей с помощью идентификаторов ресурсов в журнал событий. Затем создайте другой источник без файлов ресурсов и используйте этот источник в методе WriteEntry для записи строк непосредственно в журнал событий с помощью этого источника.

Чтобы изменить сведения о конфигурации существующего источника, необходимо удалить источник, а затем создать его с новой конфигурацией. Если другие приложения или компоненты используют существующий источник, создайте новый источник с обновленной конфигурацией, а не удаляйте существующий источник.

Примечание

Если источник уже сопоставлен с журналом и вы повторно сопоставили его с новым журналом, необходимо перезагрузить компьютер, чтобы изменения вступили в силу.

См. также раздел

Применяется к

CreateEventSource(String, String, String)

Source:
EventLog.cs
Source:
EventLog.cs
Source:
EventLog.cs

Внимание!

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

Внимание!

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

Внимание!

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

Устанавливает заданное имяисточника в качестве допустимого источника событий для внесения записей в журнал на указанном компьютере. Этот метод можно также использовать для создания нового пользовательского журнала на заданном компьютере.

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)

Параметры

source
String

Источник, по которому приложение регистрируется на указанном компьютере.

logName
String

Имя журнала, в который вносятся записи о событиях источника. Допустимые значения: Application, System или имя пользовательского журнала событий. Если значение не указано, то параметр logName по умолчанию имеет значение Application.

machineName
String

Имя компьютера, на котором регистрируется источник событий, или значение ".", если используется локальный компьютер.

Атрибуты

Исключения

machineName не является допустимым именем компьютера.

-или-

source является пустой строкой ("") или null.

-или-

logName не является допустимым именем журнала событий. Имена журналов событий должны состоять из печатных символов и не могут содержать символы "*", "?", "\".

-или-

Значение logName недопустимо для создания журнала пользователя. Имена AppEvent, SysEvent и SecEvent зарезервированы для системного использования.

-или-

Имя журнала совпадает с существующим именем источника событий.

-или-

При таком имени источника длина пути к разделу реестра превышает 254 символа.

-или-

Первые 8 символов logName совпадают с первыми 8 символами имени существующего журнала событий на указанном компьютере.

-или-

Невозможно зарегистрировать источник, так как он уже существует на заданном компьютере.

-или-

Имя источника совпадает с существующим именем источника событий.

Раздел реестра для журнала событий не может быть открыт на указанном компьютере.

Примеры

В следующем примере создается источник MySource на компьютере MyServerи записывается запись в журнал 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

Комментарии

Используйте эту перегрузку для создания пользовательского журнала или для создания и регистрации Source в существующем журнале на указанном компьютере.

Если logName имеет значение null или пустая строка (""), при вызове CreateEventSourceв журнале по умолчанию используется журнал приложений. Если журнал не существует на указанном компьютере, система создает пользовательский журнал и регистрирует приложение в качестве Source для этого журнала.

Создать источник событий нужно только при записи в журнал событий. Перед записью записи в журнал событий необходимо зарегистрировать источник событий в журнале событий в качестве допустимого источника событий. При записи журнала система использует Source для поиска соответствующего журнала, в котором будет размещаться запись. При чтении журнала событий можно указать Sourceлибо , либо Log и MachineName.

Примечание

Чтобы создать источник событий в Windows Vista и более поздних версиях или Windows Server 2003, необходимо иметь права администратора.

Это требование заключается в том, что все журналы событий, включая безопасность, должны выполняться поиск, чтобы определить, является ли источник событий уникальным. В Windows Vista и более поздних версиях у пользователей нет разрешения на доступ к журналу безопасности; поэтому возникает SecurityException исключение .

В Windows Vista и более поздних версиях права доступа пользователя определяются контролем учетных записей. Члену встроенной группы "Администраторы" присваивается два маркера доступа на время выполнения: маркер доступа обычного пользователя и маркер доступа администратора. По умолчанию назначена роль обычного пользователя. Чтобы выполнить код, который обращается к журналу безопасности, необходимо сначала повысить привилегии от обычного пользователя до администратора. Это можно сделать при запуске приложения, , щелкнув значок приложения правой кнопкой мыши и указав, что приложение должно запускаться от имени администратора.

Используйте WriteEvent и WriteEntry для записи событий в журнал событий. Для записи событий необходимо указать источник событий; Необходимо создать и настроить источник событий перед записью первой записи с помощью источника.

Создайте источник событий во время установки приложения. Это позволяет операционной системе обновить список зарегистрированных источников событий и их конфигурацию. Если операционная система не обновила свой список источников событий и вы пытаетесь записать событие с новым источником, операция записи завершится ошибкой. Вы можете настроить новый источник с помощью EventLogInstallerили с помощью CreateEventSource метода . Чтобы создать новый источник событий, необходимо иметь права администратора на компьютере.

Вы можете создать источник событий для существующего или нового журнала событий. При создании нового источника для нового журнала событий система регистрирует источник для этого журнала, но журнал не создается, пока в него не будет записана первая запись.

Журналы событий сохраняются операционной системой как файлы. При использовании EventLogInstaller или CreateEventSource для создания нового журнала событий связанный файл хранится в каталоге %SystemRoot%\System32\Config на указанном компьютере. Имя файла задается путем добавления первых Log 8 символов свойства с расширением имени файла .evt.

Источник должен быть уникальным на локальном компьютере; Новое имя источника не может соответствовать существующему имени источника или имени существующего журнала событий. Каждый источник может записывать данные только в один журнал событий одновременно; однако приложение может использовать несколько источников для записи в несколько журналов событий. Например, приложению может потребоваться несколько источников, настроенных для разных журналов событий или разных файлов ресурсов.

Источник должен быть настроен либо для записи локализованных записей, либо для записи прямых строк. Если приложение записывает записи с использованием идентификаторов ресурсов и строковых значений, необходимо зарегистрировать два отдельных источника. Например, настройте один источник с файлами ресурсов, а затем используйте этот источник в методе WriteEvent для записи записей с помощью идентификаторов ресурсов в журнал событий. Затем создайте другой источник без файлов ресурсов и используйте этот источник в методе WriteEntry для записи строк непосредственно в журнал событий с помощью этого источника.

Чтобы изменить сведения о конфигурации существующего источника, необходимо удалить источник, а затем создать его с новой конфигурацией. Если другие приложения или компоненты используют существующий источник, создайте новый источник с обновленной конфигурацией, а не удаляя существующий источник.

Примечание

Если источник уже сопоставлен с журналом и вы повторно сопоставили его с новым журналом, необходимо перезагрузить компьютер, чтобы изменения вступили в силу.

См. также раздел

Применяется к