2012-05-06 9 views
6

Как известно, мы можем использовать класс EventLog для записи журналов событий, но я смущен тем, как записать название категории в журнале событий. Thoug предоставляет параметр категории, например, один из типа WriteEntry является:Как записать журнал событий категории

public void WriteEntry(
string message, 
EventLogEntryType type, 
int eventID, 
short category 

)
И он просто показывает номер в моем журнале. Почему тип категории короткий, а не строка? Как отобразить название категории в средстве просмотра событий? Благодаря! Кстати, мы не будем создавать пользовательские CategoryMessageFile.

ответ

5

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

  1. Чтобы создать новое событие Источники журнала вы должны иметь права администратора каждый раз, когда вы создаете новый источник. Поэтому разумно собрать все источники, чтобы вы могли установить их сразу во время начальной установки.
  2. Создайте собственную dll, которая содержит таблицу String Resource для каждого идентификатора категории, который вы хотите предоставить.
  3. Зарегистрируйте dll категории в реестре, чтобы сообщить об этом Windows.

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

Существует очень хорошее Dr. Jobs Journal article, описывающее именно вашу проблему.

+0

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

+0

Что вы имеете в виду, если не рекомендуется? Это единственный путь. Если вы повторно используете DLL категории из Windows, вам все равно нужно зарегистрировать их для источника событий. Вы можете использовать только один файл категории для каждого источника события. Теперь вы разрабатываете источники событий для каждой новой dll категории, которую хотите использовать. Я сомневаюсь, что описательные имена будут такими, как Source1, Source2, Source3, только для повторного использования 3 разных файлов категорий, которые содержат сообщения, которые вы не контролируете. –

-1

вы так много перегрузок - которые могут удовлетворить вас: (почему вы выбираете сложные из них? :))

категории является фильтрация событий в журнале событий (которые вы можете сделать также с источником attribtue)

enter image description here

использовать первый или второй.

редактировать

EventLog.CreateEventSource("MyWebApplication", "Application") ; 
+0

Вы пишите, но писать категорию требование дизайн в нашей ситуации. –

+1

Это не отвечает на вопрос «Как записать категорию в журнал событий». – Despertar

+0

@Despertar Вы правы. обновлено. –

Смежные вопросы