2011-10-09 1 views
8

Desc 순서 모드에서 EventLogReader를 사용 하시겠습니까?

에서 사용하는
 EventLogQuery eventsQuery = new EventLogQuery("Security", PathType.LogName, queryString); 
    EventLogReader logReader = new EventLogReader(eventsQuery); 

로그 이벤트를 읽으려면. 내가 이벤트 번호 #xxx 최신 사용을 찾을 필요가

의 의 ( 신경 끄시 고)

그러나 독자가 1--->100

에서 시작 내가 100--->1에서 시작할 필요 내가 얻을 수있는 첫 번째 (내 쿼리를 만족) 및 루프를 중단하십시오.

I 중개자 인 DATA BUFFER을 사용하고 reverse를 사용하는 것을 원하지 않습니다.

p.s. - 내 로그 파일은 약 400MB입니다. (win7).

답변

10

당신은 EventLogQuery 클래스에 ReverseDirection 속성을 사용할 수 있습니다

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

EventLogReader logReader = new EventLogReader(eventsQuery); 

희망이 도움이됩니다.

+0

당신이 사람이야 ....... –

+0

그것은 C#을 –

+0

@Royi Namir를 사용하여 이벤트 로그에서 마지막 이벤트를 읽을 수있는 가장 빠른 방법입니다 : 그것은 가장 빠른 방법입니다 ? 그것은 당신이 프로그래밍하고있는 어플리케이션의 종류에 달려 있습니다. 응용 프로그램이 항상 실행중인 경우 이벤트 로그를 반복적으로 쿼리하는 대신 특정 이벤트가 발생하도록 구독 할 수 있습니다. – Hans

0

이벤트 뷰어의 마지막 XX 이벤트 만 원한다면 EventLogReader를 사용할 필요가 없습니다. ELR은 Vista/Windows2008/Win7로 제한되어 있기 때문에 ELR을 사용하지 않는 것이 좋습니다. .NET에서 oldschool EventLog 객체를 사용하여이를 수행하려면 "Entries"객체에서 인덱서를 사용할 수 있습니다. 다음 코드의 예 :

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

      Console.WriteLine(msg) 
     } 
관련 문제