2012-09-12 9 views
8

Quiero consultar el registro de eventos de la aplicación en una máquina remota y recurrí al uso de EventLogReader en lugar de EventLog porque lleva mucho tiempo encontrar los eventos que necesito con EventLog. Sin embargo, a pesar de que encuentra los eventos mucho más rápidos con EventLogReader, no puedo averiguar dónde diablos está la información que necesito en este objeto ... especialmente el mensaje.EventLogReader y EventRecord: ¿Dónde está el mensaje?

public static void Load() 
    { 
     string query = "*[System/Provider/@Name=\"SQLSERVERAGENT\"]"; 

     EventLogQuery elq = new EventLogQuery("Application", PathType.LogName, query); 
     elq.Session = new EventLogSession("x.x.x.x"); 
     EventLogReader elr = new EventLogReader(elq); 

     _logEntries = new List<SqlEventEntry>(); 

     EventRecord entry; 
     while ((entry = elr.ReadEvent()) != null) 
     { 
      var Message = entry.??? 
      // I want process the message in the event here, 
      // but I can't find a property anywhere that contains the message?? 
     } 
    } 
+0

De nuevo visor de eventos al rescate. ¿Hay una o más propiedades 'entry.EventData' (ya sea un enumerable llamado' Data' o simplemente varias propiedades nombradas)? Estoy apuñalando en la oscuridad un poco, pero también puedes abrir eventvwr.msc, abrir un evento aleatorio y mirar la vista XML. –

+0

@lc. Lo descubrí y publiqué la respuesta. Gracias por tu ayuda. –

+0

Sí, es una lástima que no haya documentación sobre esto en MSDN. Lo siento solo por apuñalar en la oscuridad :-P –

Respuesta

12

Sigh ... Es el método FormatDescription(). No lo vi porque solo estaba mirando las propiedades.

+1

LOL, gracias. Estaba buscando .Message o .Data también. Por mi vida, no entiendo por qué EventLog no es compatible con LINQ. –