2012-09-12 8 views
8

Ich möchte das Anwendungsereignisprotokoll auf einem Remotecomputer abfragen und habe den EventLogReader anstelle des EventLogs verwendet, da es zu lange dauert, um die Ereignisse zu finden, die ich mit dem EventLog benötige. Obwohl es die Ereignisse mit dem EventLogReader viel schneller findet, kann ich nicht herausfinden, wo die Informationen, die ich brauche, auf diesem Objekt liegen ... vor allem auf der Nachricht.EventLogReader und EventRecord: Wo ist die Nachricht?

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

Erneut Ereignisanzeige zur Rettung. Gibt es eine oder mehrere 'entry.EventData'-Eigenschaften (entweder ein Enumerat namens' Data' oder nur mehrere benannte Eigenschaften)? Ich steche im Dunkeln ein wenig, aber Sie können Eventvwr.msc öffnen, ein zufälliges Ereignis öffnen und die XML-Ansicht betrachten. –

+0

@lc. Ich habe es gerade herausgefunden und die Antwort gepostet. Danke für Ihre Hilfe. –

+0

Ja, es ist schade, dass es keine Dokumentation in MSDN gibt. Entschuldigung, dass ich nur im Dunkeln steche :-P –

Antwort

12

Seufz ... Es ist die FormatDescription() -Methode. Ich habe es nicht gesehen, weil ich nur auf die Eigenschaften schaute.

+1

LOL, Danke. Ich suchte nach .Message oder .Data auch. Für das Leben von mir verstehe ich nicht, warum EventLog LINQ nicht unterstützt. –