Регистрация событий

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

Для регистрации специальных событий можно использовать классы из пространства имен System.Diagnostics.

Архитектура регистрации событий

По умолчанию Event Log (Журнал событий) хранится в трех файлах журналов: Application, Security и System. Просматривая конфигурацию реестра службы регистрации событий, можно увидеть три записи в HKLMSystemCurrentControlSetServicesEventLog с конфигурациями, указывающими на определенные файлы. Файл журнала System используется из драйверов системы и устройств, приложения и службы записывают в журнал Application. Security является журналом только для чтения приложений. Свойство аудита операционной системы использует журнал Security.

Можно прочитать эти события с помощью административной утилиты Event Viewer. Event Viewer запускается непосредственно из Server Explorer, входящего в Visual Studio.NET. Сделайте щелчок правой кнопкой мыши на пункте Event Logs и выберите запись Launch Event Viewer из контекстного меню:

В журнале событий будет помещена следующая информация:

□ Type может быть Information, Warning и Error. Information — это редкая успешная операция, Warning — проблема, которая не является немедленно значимой, и Error — основная проблема. Дополнительными типами являются FailureAudit и SuccessAudit, но эти типы используются только для журнала Security.

□ Date и Time показывают время, когда происходит событие.

□ Source — имя программного обеспечения, регистрирующего событие. Source для журнала Application конфигурируется в HKLMSystemCurrentControlSetServicesEventLogApplication. Под этим ключом конфигурируется значение EventMessageFile для указания на DLL ресурса, который содержит сообщения об ошибках.

□ Category можно определить так, чтобы журналы событий фильтровались при использовании Event View.

□ Идентификатор события определяет сообщение об определенном событии.

Классы регистрации событий

Пространство имен System.Diagnostics имеет несколько классов для регистрации событий:

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

□ EventLogEntry является единственным входом в журнал событий. С помощью EventLogEntryCollection можно просмотреть EventLogEntry.

 Класс EventLogInstaller предназначен для установки компонента EventLog. EventLogInstaller вызывает EventLog.CreateEventSource() для создания источника событий.

С помощью EventLogTraceListener можно записать в журнал событий трассировки. Этот класс реализует абстрактный класс TraceListener.

Добавление регистрации событий

Если свойство AutoLog класса ServiceBase задано как true, то автоматически включается регистрация событий. Класс ServiceBase регистрирует информационное событие при запросах службы для запуска, остановки, паузы и продолжения. В классе ServiceInstaller создается экземпляр EventLogInstaller, чтобы сконфигурировать источник журнала событий. Этот источник журнала событий имеет такое же имя, как и служба. Для записи события используем статический метод WriteEntry() класса EventLog. Свойство Source было уже задано в классе ServiceBase:

EventLog.WriteEntry('event log message');

Этот метод регистрирует информационное событие. Если должно быть создано событие предупреждения или ошибки, то для определения этого типа используется перезагруженный метод WriteEvent():

EventLog.WriteEntry('event log message', EventLogEntryType.Warning);

EventLog.WriteEntry('event log message', EventLogEntryType.Error);

Добавление регистрации событий в другие типы приложений

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

 Используйте ToolBox для добавления компонента EventLog в конструктор.

 Задайте свойство Log компонента EventLog как Application, а свойство Source как выбранное имя. Обычно это бывает имя приложения, которое показано в Event View.

□ Теперь можно записать журналы с помощью метода WriteEntry() экземпляра EventLog.

□ Можно добавить программу установки из пункта контекстного меню Add Installer компонента EventLog. Это создает класс ProjectInstaller, который конфигурирует источник событий в реестре.

□ С помощью команды installutil теперь можно зафиксировать приложение, installutil вызывает класс ProjectInstaller и регистрирует источник событий.

Для установки типа хсору последние два шага на самом деле не нужны. Если задано свойство Source экземпляра EventLog, источник автоматически регистрируется, когда журнал событий заполняется в первый раз. Это действительно легко сделать, но для реального приложения предпочтительнее добавить программу установки: с помощью installutil /u конфигурация

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

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

Отметить Добавить цитату