2010-03-17 9 views
10
  1. कैसे पता चलेगा कि एक विशेष घटना (घटना आईडी, समय और नोड इनपुट के रूप में) लॉग है या नहीं? [इस मामले में, मुझे पता है कि केवल एक ही घटना लॉग इन किया जाएगा]
  2. घटना लॉग होता है, तो मैं कैसे घटना का वर्णन जैसी जानकारी प्राप्त करते हैं, लॉग-नाम आदि ..
उदाहरण के लिए

, मैं चाहता हूँ नोड अनुप्रयोगों और सेवाओं के लॉग के तहत एक घटना के लिए क्वेरी> माइक्रोसॉफ्ट> विंडोज> समूह नीति> परिचालन, और घटना आईडी 5315 है और समय वर्तमान समय है।सी #: किसी दिए गए ईवेंट आईडी के साथ किसी ईवेंट लॉग विवरण के लिए क्वेरी कैसे करें?

उत्तर

17

यदि आप नई शैली विंडोज इवेंट लॉग से ईवेंट पूछने जा रहे हैं तो कुछ नए मोड़ हैं।

  1. आपको सिस्टम से कक्षाओं का उपयोग करना होगा। डायग्नोस्टिक्स.इवेंटिंग। रीडर नामस्थान नई घटनाओं को पढ़ने के लिए।
  2. आपकी क्वेरी एक्सपैथ फॉर्म में होगी, ताकि टाइमरेज मुश्किल हो, EventLogQuery definition के लिए msdn देखें।
  3. आपका प्रोग्राम एक्सेस समस्याओं में भाग लेगा, लॉगिंग मशीन पर EventReaders AD समूह में शामिल उपयोगकर्ता का प्रतिरूपण करने के लिए तैयार रहें।

यह नमूना कुछ नए एक्सेस विधियों, चीयर्स दिखाता है।

 string eventID = "5312"; 
     string LogSource = "Microsoft-Windows-GroupPolicy/Operational"; 
     string sQuery = "*[System/EventID=" + eventID + "]"; 

     var elQuery = new EventLogQuery(LogSource, PathType.LogName, sQuery); 
     var elReader = new System.Diagnostics.Eventing.Reader.EventLogReader(elQuery); 

     List<EventRecord> eventList = new List<EventRecord>(); 
     for (EventRecord eventInstance = elReader.ReadEvent(); 
      null != eventInstance; eventInstance = elReader.ReadEvent()) 
     { 
      //Access event properties here: 
      //eventInstance.LogName; 
      //eventInstance.ProviderName; 
      eventList.Add(eventInstance); 
     } 
+1

धन्यवाद केल्ली .. इससे – satya

+0

मदद की गई तारीखों के साथ ईवेंट प्राप्त करने में मदद मिली? क्वेरी = "* [सिस्टम [" + "(प्रदाता/@ नाम = \" माइक्रोसॉफ्ट ऑफिस 15 अलर्ट \ ") और" + // "(EventID = 300) और" + "(टाइमक्रेटेड/@ सिस्टमटाइम > = \ "" + टी 1 + "\") और "+ " (टाइमक्रेटेड/@ सिस्टमटाइम < = \ "" + टी 2 + "\") "+ "]] "; मुझे क्वेरी अपवाद मिल रहा है –

9

आपको विचाराधीन ईवेंट लॉग क्वेरी सकता है:

var sourceName = "MySource"; 
var el = new EventLog("Application"); 
var latestEntryTime = (from entry in el.Entries.Cast<EventLogEntry>() 
         where entry.Source == sourceName 
         && // put other where clauses here... 
         orderby entry.TimeWritten descending 
         select entry).First(); 

हालांकि, चेतावनी दी है कि इस दृष्टिकोण धीमी है के बाद से Entries संग्रह काफी बड़ा हो जाता है।

संबंधित मुद्दे