2011-10-09 32 views
8

Im sử dụng trongSử dụng EventLogReader ở chế độ Đặt hàng mô tả?

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

Để đọc các sự kiện nhật ký.

tôi cần phải tìm ra sử dụng mới nhất của sự kiện số #xxx (nevermind)

Nhưng người đọc bắt đầu từ 1--->100

tôi cần nó để bắt đầu từ 100--->1 vì vậy tôi có thể nhận được đầu tiên (đáp ứng truy vấn của tôi) và Phá vỡ vòng lặp.

tôi không muốn sử dụng trung DỮ LIỆU ĐỆM và sau đó reverse nó.

p.s. - tệp nhật ký của tôi là khoảng 400 mb. (win7)

Trả lời

10

Bạn có thể sử dụng ReverseDirection tài sản trên lớp EventLogQuery:

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

EventLogReader logReader = new EventLogReader(eventsQuery); 

Hope, điều này sẽ giúp.

+0

bạn là người đàn ông ....... –

+0

Đó có phải là cách nhanh nhất để đọc các sự kiện cuối cùng từ nhật ký sự kiện sử dụng C# –

+0

@Royi Namir: Đó có phải là cách nhanh nhất ? Nó phụ thuộc vào loại ứng dụng bạn đang lập trình. Nếu ứng dụng của bạn đang chạy tất cả các thời gian sau đó bạn có thể đăng ký cho một số sự kiện xảy ra thay vì lặp lại truy vấn nhật ký sự kiện. – Hans

0

chỉ là FYI, nếu bạn chỉ muốn các sự kiện XX cuối cùng từ Trình xem sự kiện, bạn không phải sử dụng EventLogReader. Tôi không muốn sử dụng ELR vì nó bị giới hạn trong Vista/Windows2008/Win7. Để làm điều này bằng cách sử dụng đối tượng EventLog oldschool trong .NET, bạn có thể sử dụng chỉ mục trên đối tượng "Entries". Ví dụ trong đoạn mã sau:

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

      Console.WriteLine(msg) 
     } 
Các vấn đề liên quan