Почему новый пользовательский журнал событий, возвращаемый EventLog.GetEventLogs, содержит записи журнала приложений? - PullRequest
0 голосов
/ 02 ноября 2018

У меня очень странная проблема, которая, кажется, не соответствует какой-либо документации, которую я читаю о EventLog.GetEventLogs.

Я создал новый пользовательский журнал, используя Powershell (очень простая операция), который содержит ноль записей. Однако, когда я вызываю EventLog.GetEventLogs и нахожу новый журнал в результирующем массиве, свойство Entries содержит все записи журнала приложения. Я ожидал, что количество записей будет равно нулю, что я см. в окне просмотра событий.

Что может вызвать этот результат?

PowerConsole:

> New-EventLog
> Log Name? MyModule
> Souce Name 1? MyModule
> Source Name 2?

C # код:

var logs = EventLog.GetEventLogs();
var log = logs.FirstOrDefault(l => l.Log == "MyModule");

Response.Write(log.Entries.Count); // Outputs 18,896

Ответы [ 2 ]

0 голосов
/ 02 ноября 2018

Я нашел решение. Команда PowerShell, которая создает новые журналы, в конечном итоге изменяет реестр. Я предполагаю, что некоторые из этих параметров реестра не будут применены, пока не будет выполнена какая-либо другая команда. После перезапуска моей машины EventLog.GetEvenLogs дал ожидаемые результаты.

0 голосов
/ 02 ноября 2018

Я думаю, что вы, возможно, смотрите на неправильный метод.

Вместо вызова GetEventLogs получите ссылку на ваш пользовательский журнал и , затем посмотрите на его записи:

EventLog myLog = new EventLog("my_log");           
var count = myLog.Entries.Count;

Если мы тогда напишем такую ​​запись:

EventLog myLog = new EventLog("my_log");
myLog.Source = "my_source";
myLog.WriteEntry("A test entry");

Количество будет увеличиваться, как и ожидалось.

...