Поделиться через


EventLog.CreateEventSource Метод

Определение

Устанавливает приложение в виде возможности записи сведений о событии в определенный журнал в системе.

Перегрузки

CreateEventSource(EventSourceCreationData)

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

CreateEventSource(String, String)

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

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

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

CreateEventSource(EventSourceCreationData)

Исходный код:
EventLog.cs
Исходный код:
EventLog.cs
Исходный код:
EventLog.cs
Исходный код:
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, LogName и MachineName свойства для создания значений реестра на целевом компьютере для нового источника и связанного с ним журнала событий. Новое имя источника не может совпадать с существующим исходным именем или существующим именем журнала событий на целевом компьютере. Если свойство LogName не задано, источник регистрируется в журнале событий application. Если MachineName не задано, источник регистрируется на локальном компьютере.

Заметка

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

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

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

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

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

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

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

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

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

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

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

Заметка

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

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

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

CreateEventSource(String, String)

Исходный код:
EventLog.cs
Исходный код:
EventLog.cs
Исходный код:
EventLog.cs
Исходный код:
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

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

Исключения

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 в существующем журнале на локальном компьютере.

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

Заметка

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

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

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

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

Заметка

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

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

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

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

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

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

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

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

Заметка

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

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

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

CreateEventSource(String, String, String)

Исходный код:
EventLog.cs
Исходный код:
EventLog.cs
Исходный код:
EventLog.cs
Исходный код:
EventLog.cs

Внимание!

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

Внимание!

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

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

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)

Параметры

source
String

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

logName
String

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

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 в существующем журнале на указанном компьютере.

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

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

Заметка

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

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

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

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

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

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

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

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

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

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

Заметка

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

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

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