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


EventSourceCreationData Класс

Определение

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

public ref class EventSourceCreationData
public class EventSourceCreationData
type EventSourceCreationData = class
Public Class EventSourceCreationData
Наследование
EventSourceCreationData

Примеры

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

using System;
using System.Globalization;
using System.Diagnostics;

namespace EventLogSamples
{
    class CreateSourceSample
    {
        [STAThread]
        static void Main(string[] args)
        {
            EventSourceCreationData mySourceData = new EventSourceCreationData("", "");
            bool registerSource = true;

            // Process input parameters.
            if (args.Length > 0)
            {
                // Require at least the source name.

                mySourceData.Source = args[0];

                if (args.Length > 1)
                {
                    mySourceData.LogName = args[1];
                }

                if (args.Length > 2)
                {
                    mySourceData.MachineName = args[2];
                }
                if ((args.Length > 3) && (args[3].Length > 0))
                {
                    mySourceData.MessageResourceFile = args[3];
                }
            }
            else
            {
                // Display a syntax help message.
                Console.WriteLine("Input:");
                Console.WriteLine(" source [event log] [machine name] [resource file]");

                registerSource = false;
            }

            // Set defaults for parameters missing input.
            if (mySourceData.MachineName.Length == 0)
            {
                // Default to the local computer.
                mySourceData.MachineName = ".";
            }
            if (mySourceData.LogName.Length == 0)
            {
                // Default to the Application log.
                mySourceData.LogName = "Application";
            }

            // Determine if the source exists on the specified computer.
            if (!EventLog.SourceExists(mySourceData.Source,
                                       mySourceData.MachineName))
            {
                // The source does not exist.

                // Verify that the message file exists
                // and the event log is local.

                if ((mySourceData.MessageResourceFile != null) &&
                    (mySourceData.MessageResourceFile.Length > 0))
                {
                    if (mySourceData.MachineName == ".")
                    {
                        if (!System.IO.File.Exists(mySourceData.MessageResourceFile))
                        {
                            Console.WriteLine("File {0} not found - message file not set for source.",
                                mySourceData.MessageResourceFile);
                            registerSource = false;
                        }
                    }
                    else
                    {
                        // For simplicity, do not allow setting the message
                        // file for a remote event log.  To set the message
                        // for a remote event log, and for source registration,
                        // the file path should be specified with system-wide
                        // environment variables that are valid on the remote
                        // computer, such as
                        // "%SystemRoot%\system32\myresource.dll".

                        Console.WriteLine("Message resource file ignored for remote event log.");
                        registerSource = false;
                    }
                }
            }
            else
            {
                // Do not register the source, it already exists.
                registerSource = false;

                // Get the event log corresponding to the existing source.
                string sourceLog;
                sourceLog = EventLog.LogNameFromSourceName(mySourceData.Source,
                                mySourceData.MachineName);

                // Determine if the event source is registered for the
                // specified log.

                if (sourceLog.ToUpper(CultureInfo.InvariantCulture) != mySourceData.LogName.ToUpper(CultureInfo.InvariantCulture))
                {
                    // An existing source is registered
                    // to write to a different event log.
                    Console.WriteLine("Warning: source {0} is already registered to write to event log {1}",
                        mySourceData.Source, sourceLog);
                }
                else
                {
                    // The source is already registered
                    // to write to the specified event log.

                    Console.WriteLine("Source {0} already registered to write to event log {1}",
                        mySourceData.Source, sourceLog);
                }
            }

            if (registerSource)
            {
                // Register the new event source for the specified event log.

                Console.WriteLine("Registering new source {0} for event log {1}.",
                    mySourceData.Source, mySourceData.LogName);
                EventLog.CreateEventSource(mySourceData);
                Console.WriteLine("Event source was registered successfully!");
            }
        }
    }
}
Imports System.Globalization
Imports System.Diagnostics

Namespace EventLogSamples
    Class CreateSourceSample

        Public Shared Sub Main(ByVal args() As String)
        
            Dim mySourceData As EventSourceCreationData = new EventSourceCreationData("", "")
            Dim registerSource As Boolean = True

            ' Process input parameters.
            If args.Length > 0
                ' Require at least the source name.

                mySourceData.Source = args(0)

                If args.Length > 1
   
                    mySourceData.LogName = args(1)
    
                End If
                If args.Length > 2
   
                    mySourceData.MachineName = args(2)
    
                End If
                If args.Length > 3 AndAlso args(3).Length > 0
   
                    mySourceData.MessageResourceFile = args(3)
    
                End If

            Else 
                ' Display a syntax help message.
                Console.WriteLine("Input:")
                Console.WriteLine(" source [event log] [machine name] [resource file]")

                registerSource = False
            End If

            ' Set defaults for parameters missing input.
            If mySourceData.MachineName.Length = 0
            
                ' Default to the local computer.
                mySourceData.MachineName = "."
            End If
            If mySourceData.LogName.Length = 0
                ' Default to the Application log.
                mySourceData.LogName = "Application"
            End If

            ' Determine if the source exists on the specified computer.
            If Not EventLog.SourceExists(mySourceData.Source, _
                                       mySourceData.MachineName)
                ' The source does not exist.  

                ' Verify that the message file exists
                ' and the event log is local.
                If mySourceData.MessageResourceFile <> Nothing AndAlso _
                   mySourceData.MessageResourceFile.Length > 0
                   
                    If mySourceData.MachineName = "."
                        If Not System.IO.File.Exists(mySourceData.MessageResourceFile)

                            Console.WriteLine("File {0} not found - message file not set for source.", _
                                mySourceData.MessageResourceFile)
                            registerSource = False
                        End If
                    Else
                        ' For simplicity, do not allow setting the message
                        ' file for a remote event log.  To set the message
                        ' for a remote event log, and for source registration,
                        ' the file path should be specified with system-wide
                        ' environment variables that are valid on the remote
                        ' computer, such as
                        ' "%SystemRoot%\system32\myresource.dll".

                        Console.WriteLine("Message resource file ignored for remote event log.")
                        registerSource = False

                    End If
                End If
            Else 
                ' Do not register the source, it already exists.
                registerSource = False

                ' Get the event log corresponding to the existing source.
                Dim sourceLog As string
                sourceLog = EventLog.LogNameFromSourceName(mySourceData.Source, _
                                mySourceData.MachineName)

                ' Determine if the event source is registered for the 
                ' specified log.

                If sourceLog.ToUpper(CultureInfo.InvariantCulture) <> mySourceData.LogName.ToUpper(CultureInfo.InvariantCulture)

                    ' An existing source is registered 
                    ' to write to a different event log.

                    Console.WriteLine("Warning: source {0} is already registered to write to event log {1}", _
                        mySourceData.Source, sourceLog)
                Else 
                    ' The source is already registered 
                    ' to write to the specified event log.

                    Console.WriteLine("Source {0} already registered to write to event log {1}", _
                        mySourceData.Source, sourceLog)

                End If
            End If

            If registerSource
                ' Register the new event source for the specified event log.

                Console.WriteLine("Registering new source {0} for event log {1}.", _
                    mySourceData.Source, mySourceData.LogName)
                EventLog.CreateEventSource(mySourceData)
                Console.WriteLine("Event source was registered successfully!")
            End If

        End Sub
    End Class
End Namespace 'EventLogSamples

Комментарии

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

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

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

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

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

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

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

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

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

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

Конструкторы

Имя Описание
EventSourceCreationData(String, String)

Инициализирует новый экземпляр EventSourceCreationData класса с указанным источником событий и именем журнала событий.

Свойства

Имя Описание
CategoryCount

Возвращает или задает количество категорий в файле ресурсов категории.

CategoryResourceFile

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

LogName

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

MachineName

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

MessageResourceFile

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

ParameterResourceFile

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

Source

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

Методы

Имя Описание
Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetType()

Возвращает Type текущего экземпляра.

(Унаследовано от Object)
MemberwiseClone()

Создает неглубокую копию текущей Object.

(Унаследовано от Object)
ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)

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

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