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событий.
Замечание
Это приложение необходимо запустить от имени администратора.
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 класс позволяет получить доступ к коллекции всех журналов событий. Вы можете использовать static элементы EventLog для удаления журналов, получения списков журналов, создания или удаления источника или определения того, содержит ли компьютер определенный источник.
Существует три журнала событий по умолчанию: приложения, система и безопасность. Журнал безопасности доступен только для чтения. Другие приложения и службы, которые вы устанавливаете, например Active Directory, могут иметь дополнительные журналы событий.
При использовании EventLog класса существуют рекомендации по безопасности. EventLog требует EventLogPermission разрешений для определенных действий. Рекомендуется 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 записи событий в журнал событий. Необходимо указать источник событий для записи событий; Необходимо создать и настроить источник событий перед записью первой записи с исходным кодом.
Создайте новый источник событий во время установки приложения. Это позволяет операционной системе обновлять список зарегистрированных источников событий и их конфигурацию. Если операционная система не обновила свой список источников событий, и вы попытаетесь написать событие с новым источником, операция записи завершится ошибкой. Можно настроить новый источник с помощью EventLogInstaller объекта или CreateEventSource метода. Для создания нового источника событий необходимо иметь административные учетные данные на компьютере.
Каждый источник может записывать только в один журнал событий одновременно; Однако приложение может использовать несколько источников для записи в несколько журналов событий. Например, приложению может потребоваться несколько источников, настроенных для разных журналов событий или разных файлов ресурсов. Чтобы изменить сведения о конфигурации существующего источника, необходимо удалить источник и создать его с новой конфигурацией. Если другие приложения или компоненты используют существующий источник, создайте новый источник с обновленной конфигурацией вместо удаления существующего источника.
Вы можете зарегистрировать источник событий с локализованными ресурсами для категории событий и строк сообщений. Приложение может записывать записи журнала событий с помощью идентификаторов ресурсов вместо указания фактических строковых значений. EventLogInstaller Дополнительные сведения о настройке источника с помощью файлов ресурсов см. в разделе и EventSourceCreationData классах.
Если приложение записывает строковые значения непосредственно в журнал событий, вам не нужно задавать свойства файла ресурсов для источника. Источник должен быть настроен для записи локализованных записей или для записи прямых строк. Если приложение записывает записи с помощью идентификаторов ресурсов и строковых значений, необходимо зарегистрировать два отдельных источника. Например, настройте один источник с файлами ресурсов, а затем используйте этот источник в методе WriteEvent для записи записей с помощью идентификаторов ресурсов в журнал событий. Затем создайте другой источник без файлов ресурсов и используйте этот источник в методе WriteEntry для записи строк непосредственно в журнал событий с помощью этого источника.
При написании событий необходимо, по крайней мере, указать строку сообщения или идентификатор ресурса для строки сообщения. Другие свойства события являются необязательными. Ниже приведены примеры дополнительных параметров событий:
Можно задать значок, отображаемый в средстве EventLogEntryType просмотра событий для записи.
Можно указать идентификатор категории для события, если приложение использует категории для фильтрации событий.
Двоичные данные можно подключить к записи события, если требуется связать дополнительные сведения с заданным событием.
Это важно
Ведение журнала событий использует дисковое пространство, время процессора и другие системные ресурсы. Важно регистрировать только важную информацию. Рекомендуется размещать вызовы журнала событий в пути ошибки, а не в основном пути кода, поэтому они не влияют на производительность.
Список начальных значений свойств для экземпляра EventLogсм. в конструкторе EventLog .
Конструкторы
| Имя | Описание |
|---|---|
| EventLog() |
Инициализирует новый экземпляр класса EventLog. Не связывает экземпляр с любым журналом. |
| EventLog(String, String, String) |
Инициализирует новый экземпляр класса EventLog. Связывает экземпляр с журналом на указанном компьютере и создает или назначает указанный источник указанному источнику EventLog. |
| EventLog(String, String) |
Инициализирует новый экземпляр класса EventLog. Связывает экземпляр с журналом на указанном компьютере. |
| EventLog(String) |
Инициализирует новый экземпляр класса EventLog. Связывает экземпляр с журналом на локальном компьютере. |
Свойства
| Имя | Описание |
|---|---|
| CanRaiseEvents |
Возвращает значение, указывающее, может ли компонент вызвать событие. (Унаследовано от Component) |
| Container |
Возвращает объект IContainer , содержащий Componentобъект . (Унаследовано от Component) |
| DesignMode |
Возвращает значение, указывающее, находится ли текущий Component режим разработки. (Унаследовано от Component) |
| EnableRaisingEvents |
Возвращает или задает значение, указывающее, получает EntryWritten ли EventLog уведомления о событиях. |
| 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, String) |
Устаревшие..
Устаревшие..
Устаревшие..
Устанавливает указанное имя источника в качестве допустимого источника событий для записи записей в журнал на указанном компьютере. Этот метод также можно использовать для создания нового пользовательского журнала на указанном компьютере. |
| CreateEventSource(String, String) |
Устанавливает указанное имя источника в качестве допустимого источника событий для записи записей в журнал на локальном компьютере. Этот метод также может создать новый пользовательский журнал на локальном компьютере. |
| CreateObjRef(Type) |
Создает объект, содержащий все соответствующие сведения, необходимые для создания прокси-сервера, используемого для взаимодействия с удаленным объектом. (Унаследовано от MarshalByRefObject) |
| Delete(String, String) |
Удаляет журнал событий с указанного компьютера. |
| Delete(String) |
Удаляет журнал событий с локального компьютера. |
| DeleteEventSource(String, String) |
Удаляет регистрацию источника событий приложения с указанного компьютера. |
| DeleteEventSource(String) |
Удаляет регистрацию источника событий из журнала событий локального компьютера. |
| Dispose() |
Освобождает все ресурсы, используемые параметром Component. (Унаследовано от Component) |
| Dispose(Boolean) |
Освобождает неуправляемые ресурсы, используемые EventLogи при необходимости освобождает управляемые ресурсы. |
| EndInit() |
Завершает инициализацию используемого EventLog в форме или другом компоненте. Инициализация происходит во время выполнения. |
| Equals(Object) |
Определяет, равен ли указанный объект текущему объекту. (Унаследовано от Object) |
| Exists(String, String) |
Определяет, существует ли журнал на указанном компьютере. |
| Exists(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, String) |
Определяет, зарегистрирован ли источник событий на указанном компьютере. |
| SourceExists(String) |
Определяет, зарегистрирован ли источник событий на локальном компьютере. |
| ToString() |
String Возвращает имя, содержащее имя , если таковое Componentимеется. Этот метод не должен быть переопределен. (Унаследовано от Component) |
| WriteEntry(String, EventLogEntryType, Int32, Int16, Byte[]) |
Записывает запись с заданным текстом сообщения, идентификатором события, определяемым приложением, и определяемой приложением категорией в журнал событий, и добавляет двоичные данные в сообщение. |
| WriteEntry(String, EventLogEntryType, Int32, Int16) |
Записывает запись с заданным текстом сообщения, идентификатором события, определяемым приложением, и определяемой приложением категорией в журнал событий. |
| WriteEntry(String, EventLogEntryType, Int32) |
Записывает запись с заданным текстом сообщения и идентификатором события, определяемым приложением, в журнал событий. |
| WriteEntry(String, EventLogEntryType) |
Записывает ошибку, предупреждение, информацию, аудит успешности или запись аудита сбоя с заданным текстом сообщения в журнал событий. |
| WriteEntry(String, String, EventLogEntryType, Int32, Int16, Byte[]) |
Записывает запись с заданным текстом сообщения, идентификатором события, определяемым приложением, и определяемой приложением категорией в журнал событий (с использованием указанного зарегистрированного источника событий) и добавляет двоичные данные в сообщение. |
| WriteEntry(String, String, EventLogEntryType, Int32, Int16) |
Записывает запись с заданным текстом сообщения, идентификатором события, определяемым приложением, и определяемой приложением категорией в журнал событий, используя указанный зарегистрированный источник событий. Средство |
| WriteEntry(String, String, EventLogEntryType, Int32) |
Записывает запись с заданным текстом сообщения и идентификатором события, определяемым приложением, в журнал событий с помощью указанного зарегистрированного источника событий. |
| WriteEntry(String, String, EventLogEntryType) |
Записывает ошибку, предупреждение, сведения, аудит успешности или запись аудита сбоя с заданным текстом сообщения в журнал событий с использованием указанного зарегистрированного источника событий. |
| WriteEntry(String, String) |
Записывает запись типа информации с заданным текстом сообщения в журнал событий, используя указанный зарегистрированный источник событий. |
| WriteEntry(String) |
Записывает запись типа информации с заданным текстом сообщения в журнал событий. |
| WriteEvent(EventInstance, Byte[], Object[]) |
Записывает запись журнала событий с заданными данными события, строками замены сообщений и связанными двоичными данными. |
| WriteEvent(EventInstance, Object[]) |
Записывает локализованную запись в журнал событий. |
| WriteEvent(String, EventInstance, Byte[], Object[]) |
Записывает запись журнала событий с заданными данными события, строками замены сообщений и связанными двоичными данными и указанным зарегистрированным источником событий. |
| WriteEvent(String, EventInstance, Object[]) |
Записывает запись журнала событий с заданными данными события и строками замены сообщений, используя указанный зарегистрированный источник событий. |
События
| Имя | Описание |
|---|---|
| Disposed |
Происходит при удалении компонента вызовом Dispose() метода. (Унаследовано от Component) |
| EntryWritten |
Происходит при записи в журнал событий на локальном компьютере. |