2011-10-09 10 views
8

Im usar enUsar EventLogReader en modo de orden Desc?

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

Para poder leer los eventos de registro.

Tengo que encontrar la última uso del número de evento #xxx (no importa)

Pero el lector comienza a partir 1--->100

lo necesito para comenzar a partir de 100--->1 para que pueda obtener el primero (que satisface mi consulta) y Rompe el ciclo.

I no quieren de usar intermediario BUFFER DE DATOS y luego reverse ella.

p.s. - mi archivo de registro es de aproximadamente 400 mb. (win7).

Respuesta

10

Usted puede utilizar la propiedad ReverseDirection en la clase EventLogQuery:

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

EventLogReader logReader = new EventLogReader(eventsQuery); 

Esperanza, esto ayuda.

+0

que eres el hombre ....... –

+0

¿Es la forma más rápida de leer el último evento del registro de eventos usando C# –

+0

@Royi Namir: ¿Es la forma más rápida ? Depende del tipo de aplicación que esté programando. Si su aplicación se ejecuta todo el tiempo, puede suscribirse para que ocurran ciertos eventos en lugar de consultar el registro de eventos. – Hans

0

solo para tu información, si solo quieres los últimos XX eventos del Visor de eventos, no tienes que usar EventLogReader. Prefiero no usar ELR porque está limitado a Vista/Windows2008/Win7. Para hacer esto utilizando el objeto EventLog de old school en .NET, puede usar el indexador en el objeto "Entradas". Ejemplo En el siguiente fragmento:

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

      Console.WriteLine(msg) 
     }