Использовать EventLogReader в режиме заказа Desc? - PullRequest
8 голосов
/ 09 октября 2011

Я использую в

  EventLogQuery eventsQuery = new EventLogQuery("Security", PathType.LogName, queryString);
  EventLogReader logReader = new EventLogReader(eventsQuery);

Для чтения журнала событий.

Мне нужно найти последнее использование номера события #xxx ( nevermind )

Но читатель начинает с 1--->100

Мне нужно начать с 100--->1, чтобы я мог получить первый (который удовлетворяет моему запросу) и Разорвать цикл.

Я не хочу, чтобы использовал посредник БУФЕР ДАННЫХ , а затем reverse это.

p.s. - мой файл журнала составляет около 400 МБ. (win7).

Ответы [ 2 ]

11 голосов
/ 09 октября 2011

Вы можете использовать свойство ReverseDirection в классе EventLogQuery:

EventLogQuery eventsQuery = new EventLogQuery("Security", PathType.LogName, queryString);
eventsQuery.ReverseDirection = true;

EventLogReader logReader = new EventLogReader(eventsQuery);

Надеюсь, это поможет.

0 голосов
/ 06 марта 2012

только к вашему сведению, если вы просто хотите получить последние XX события из Event Viewer, вам не нужно использовать EventLogReader. Я предпочитаю не использовать ELR, потому что он ограничен Vista / Windows2008 / Win7. Чтобы сделать это с помощью объекта oldschool EventLog в .NET, вы можете просто использовать индексатор для объекта «Записи». Пример в следующем фрагменте:

        EventLog log = new EventLog("Application");
        for (int counter = 1; counter <= sizeToGet; counter++)
        {
            string msg = log.Entries[log.Entries.Count - counter].Message;

            Console.WriteLine(msg)
        }
...