2012-09-12 20 views
8

Uygulama Olay Günlüğünü uzak bir makinede sorgulamak istiyorum ve EventLog yerine ihtiyacım olan olayları bulmanın çok uzun sürmesi nedeniyle EventLog yerine EventLogReader'ı kullanmayı tercih ettim. Ancak, olayları EventLogReader ile çok daha hızlı bulsa da, ihtiyacım olan bilginin bu nesne üzerinde nerede olduğunu anlayamıyorum ... özellikle de mesaj.EventLogReader ve EventRecord: Mesaj nerede?

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

Yine olay görüntüleyiciyi kurtarmaya. Bir veya daha fazla 'entry.EventData' özelliği var mı ('Data' olarak adlandırılan numaralandırılabilir veya yalnızca birden çok adlandırılmış özellik)? Biraz karanlıkta bıçaklıyorum, ama eventvwr.msc'yi açabilir, rastgele bir olay açabilir ve XML görünümüne bakabilirsiniz. –

+0

@lc. Ben sadece anladım ve cevabı yazdım. Yardım ettiğin için teşekkür ederim. –

+0

Evet, bu bilgisayarda MSDN ile ilgili bir belge yok. Sadece karanlıkta bıçakladığım için üzgünüm: -P –

cevap

12

Sigh ... FormatDescription() yöntemi budur. Onu görmedim çünkü sadece mülklere bakıyordum.

+1

LOL, Teşekkürler. Ben de aradım .Message veya .Data. Hayatım boyunca EventLog'un neden LINQ'yi desteklemediğini anlamıyorum. –