在Desc订单模式下使用EventLogReader?

时间:2011-10-09 16:12:43

标签: c# .net-3.5 event-log

我在

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

为了阅读日志事件。

我需要找到事件编号#xxx最新用法 nevermind

读者从1--->100

开始

我需要它从100--->1开始,所以我可以得到第一个(满足我的查询)和打破循环。

不希望使用中间人数据BUFFER 然后使用reverse

P.S。 - 我的日志文件大约是400 MB。 (win7)。

2 个答案:

答案 0 :(得分:11)

您可以使用ReverseDirection类的EventLogQuery属性:

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

EventLogReader logReader = new EventLogReader(eventsQuery);

希望,这有帮助。

答案 1 :(得分:0)

仅供参考,如果您只想要事件查看器中的最后XX个事件,则不必使用EventLogReader。我不想使用ELR,因为它仅限于Vista / Windows2008 / Win7。要使用.NET中的oldschool EventLog对象执行此操作,您只需在“条目”对象上使用索引器即可。以下代码段中的示例:

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

            Console.WriteLine(msg)
        }