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

Я хочу программно создать собственное представление журнала событий в приложении C#.

Вот как создать собственное представление Eventlog с помощью приложения Eventlog из Microsoft Windows:

создать пользовательский вид

Я искал в классе System.Diagnostics.EventLog метод, который делает то же самое, что и кнопка, найденная в приложении Eventlog от Microsoft. К сожалению, я не смог найти ни одного функционала, который удовлетворял бы мои потребности.

Кто-нибудь когда-нибудь программно создавал собственное представление журнала событий на С# или знает, как это работает?


person Dominik B    schedule 17.04.2015    source источник
comment
Что именно делает эта кнопка? (может быть, даже скриншот того, что он делает, было бы неплохо увидеть там, чтобы помочь   -  person Thomas    schedule 17.04.2015
comment
@Thomas К сожалению, я не могу добавить изображение в свой пост, так как моя репутация низкая. Вот изображение этой кнопки   -  person Dominik B    schedule 17.04.2015


Ответы (2)


Если только что протестировали подход, найденный здесь:

try
{
    XmlTextWriter view = new XmlTextWriter("C:\\ProgramData\\Microsoft\\Event Viewer\\Views\\View_1.xml", Encoding.Unicode);
    // Root.
    view.WriteStartDocument();
    view.WriteStartElement("ViewerConfig");
    //Create Node for queryConfig
    view.WriteStartElement("QueryConfig");
    view.WriteStartElement("QueryParams");
    view.WriteStartElement("UserQuery");
    view.WriteEndElement();
    view.WriteEndElement();
    //QueryNode
    view.WriteStartElement("QueryNode");
    //....

    view.Close();
}
catch (XmlException ex)
{
    Console.WriteLine(ex.StackTrace);
}

Это создало для меня собственное представление. введите здесь описание изображения

По сути, пользовательские представления представляют собой xml-файлы, хранящиеся в C:\\ProgramData\\Microsoft\\Event Viewer\\Views\\, и вы можете просто создать свой собственный, создав xml-документ.

Если вы хотите узнать, как отформатировать такой XML-документ, вы всегда можете вернуться к уже заданным запросам в папке «Роли сервера» в разделе C:\ProgramData\Microsoft\Event Viewer\Views\ServerRoles.

person Marco    schedule 17.04.2015
comment
Спасибо, это сработало отлично. Однако теперь, когда я знаю, что есть папка с файлами .xml, я, вероятно, просто создам файл .xml заранее и просто перемещу его в папку программно. - person Dominik B; 17.04.2015
comment
Я бы тоже так сделал. Это может пригодиться при выдаче запрошенных виртуальных машин и запуске сценариев конфигурации для создания этих представлений. - person Marco; 17.04.2015

Возможное решение:

  1. Создайте желаемое пользовательское представление, используя интерфейс eventvwr.msc (показан на предоставленном вами изображении).
  2. Экспортируйте его в файл .xml и изучите/проведите небольшое исследование его структуры.
  3. Напишите код для создания такого XML-файла в соответствии с вашими потребностями или используйте уже созданный и экспортированный, только заменив соответствующие «заполнители» (коды событий, источники событий и т. д.).
  4. Запустите eventvwr.exe с опцией /v, например eventvwr.exe /v:MyView.xml (больше опций, используя eventvwr.exe /?)
person gdbcore    schedule 17.04.2015
comment
По сути, это тот же подход, который использовал Serv, и он сработал. Спасибо. - person Dominik B; 17.04.2015