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


EventLog Класс

Определение

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

public ref class EventLog : System::ComponentModel::Component, System::ComponentModel::ISupportInitialize
public class EventLog : System.ComponentModel.Component, System.ComponentModel.ISupportInitialize
type EventLog = class
    inherit Component
    interface ISupportInitialize
Public Class EventLog
Inherits Component
Implements ISupportInitialize
Наследование
Реализации

Примеры

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

Примечание

Начиная с Windows Vista, это приложение необходимо запускать от имени администратора.

#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

Комментарии

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

Важно!

Этот тип реализует интерфейс IDisposable. По окончании использования выдаленную ему память следует прямо или косвенно освободить. Чтобы сделать это прямо, вызовите его метод Dispose в блоке try/catch. Чтобы сделать это косвенно, используйте языковые конструкции, такие как using (в C#) или Using (в Visual Basic). Дополнительные сведения см. в разделе "Использование объекта, реализующего IDisposable" в статье об интерфейсе IDisposable.

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

Существует три журнала событий по умолчанию: Application, System и Security. Журнал безопасности доступен только для чтения. Другие приложения и службы, которые вы устанавливаете, например Active Directory, могут содержать дополнительные журналы событий.

При использовании EventLog класса существуют вопросы безопасности. EventLogтребуются EventLogPermission разрешения для определенных действий в платформа .NET Framework 2.0 и более поздних версий или полное доверие к платформа .NET Framework 1.0 и 1.1. Рекомендуется EventLogPermission не предоставлять коду с частичным доверием. Никогда не следует передавать объект журнала событий, включая EventLogEntryCollection объекты и EventLogEntry , менее доверенному коду. Например, создание EventLog объекта, запись записи, а затем передача EventLog объекта в частично доверенный код может создать проблему безопасности, так как возможность чтения и записи в журнал событий позволяет коду выполнять такие действия, как выдача сообщений журнала событий от имени другого приложения.

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

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

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

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

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

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

Важно!

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

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

Примечание

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

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

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

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

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

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

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

  • Можно задать EventLogEntryType , чтобы указать значок, отображаемый Просмотр событий для записи.

  • Можно указать идентификатор категории для события, если приложение использует категории для фильтрации событий.

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

Важно!

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

Список начальных значений свойств для экземпляра EventLogсм. в конструкторе EventLog .

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

EventLog()

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

EventLog(String)

Инициализирует новый экземпляр класса EventLog. Связывает экземпляр с журналом на локальном компьютере.

EventLog(String, String)

Инициализирует новый экземпляр класса EventLog. Связывает экземпляр с журналом на указанном компьютере.

EventLog(String, String, String)

Инициализирует новый экземпляр класса EventLog. Связывает экземпляр с журналом на указанном компьютере и создает или присваивает заданный источник классу EventLog.

Свойства

CanRaiseEvents

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

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

Возвращает объект IContainer, который содержит коллекцию Component.

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

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

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

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

Entries

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

Events

Возвращает список обработчиков событий, которые прикреплены к этому объекту Component.

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

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

LogDisplayName

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

MachineName

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

MaximumKilobytes

Возвращает или устанавливает максимальный размер журнала событий в килобайтах.

MinimumRetentionDays

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

OverflowAction

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

Site

Получает или задает ISite объекта Component.

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

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

SynchronizingObject

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

Методы

BeginInit()

Начинает инициализацию класса EventLog, используемого в форме или используемого другим компонентом. Инициализация происходит во время выполнения.

Clear()

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

Close()

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

CreateEventSource(EventSourceCreationData)

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

CreateEventSource(String, String)

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

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

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

CreateObjRef(Type)

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

(Унаследовано от MarshalByRefObject)
Delete(String)

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

Delete(String, String)

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

DeleteEventSource(String)

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

DeleteEventSource(String, String)

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

Dispose()

Освобождает все ресурсы, занятые модулем Component.

(Унаследовано от Component)
Dispose(Boolean)

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

EndInit()

Завершает инициализацию класса EventLog, используемого в форме или другим компонентом. Инициализация происходит во время выполнения.

Equals(Object)

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

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

Определяет наличие журнала на локальном компьютере.

Exists(String, String)

Определяет наличие журнала на заданном компьютере.

GetEventLogs()

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

GetEventLogs(String)

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

GetHashCode()

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

(Унаследовано от Object)
GetLifetimeService()
Устаревшие..

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

(Унаследовано от MarshalByRefObject)
GetService(Type)

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

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

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

(Унаследовано от Object)
InitializeLifetimeService()
Устаревшие..

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

(Унаследовано от MarshalByRefObject)
LogNameFromSourceName(String, String)

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

MemberwiseClone()

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

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

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

(Унаследовано от MarshalByRefObject)
ModifyOverflowPolicy(OverflowAction, Int32)

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

RegisterDisplayName(String, Int64)

Определяет локализованное имя для журнала событий, которое отображается в "Просмотре событий" сервера.

SourceExists(String)

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

SourceExists(String, String)

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

ToString()

Возвращает объект String, содержащий имя Component, если оно есть. Этот метод не следует переопределять.

(Унаследовано от Component)
WriteEntry(String)

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

WriteEntry(String, EventLogEntryType)

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

WriteEntry(String, EventLogEntryType, Int32)

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

WriteEntry(String, EventLogEntryType, Int32, Int16)

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

WriteEntry(String, EventLogEntryType, Int32, Int16, Byte[])

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

WriteEntry(String, String)

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

WriteEntry(String, String, EventLogEntryType)

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

WriteEntry(String, String, EventLogEntryType, Int32)

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

WriteEntry(String, String, EventLogEntryType, Int32, Int16)

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

WriteEntry(String, String, EventLogEntryType, Int32, Int16, Byte[])

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

WriteEvent(EventInstance, Byte[], Object[])

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

WriteEvent(EventInstance, Object[])

Вносит локализованные записи в журнал событий.

WriteEvent(String, EventInstance, Byte[], Object[])

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

WriteEvent(String, EventInstance, Object[])

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

События

Disposed

Возникает при удалении компонента путем вызова метода Dispose().

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

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

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

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