2011-10-09 9 views
8

इमDesc ऑर्डर मोड में EventLogReader का उपयोग करें?

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

में उपयोग करते हुए आदेश में लॉग ईवेंट को पढ़ने के लिए।

मैं घटना संख्या #xxx (कोई बात नहीं)

लेकिन पाठक 1--->100

से शुरू होता है की नवीनतम उपयोग मैं इसकी आवश्यकता 100--->1 से शुरू करने के लिए तो मैं प्राप्त कर सकते हैं खोजने की जरूरत है पहले एक (जो मेरी क्वेरी को संतुष्ट करता है) और लूप तोड़ें।

मैं नहीं चाहता किबिचौलिया डेटा बफर उपयोग करना चाहते हैं और फिर इसे reverse

पेज। - मेरी लॉग फ़ाइल लगभग 400 एमबी है। (win7)।

उत्तर

10

आप EventLogQuery वर्ग पर ReverseDirection संपत्ति इस्तेमाल कर सकते हैं:

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

EventLogReader logReader = new EventLogReader(eventsQuery); 

आशा, इस मदद करता है।

+0

आप आदमी हैं ....... –

+0

यह C# –

+0

@Royi Namir का उपयोग कर ईवेंट लॉग से पिछले घटना को पढ़ने के लिए सबसे तेज़ तरीका है: यह सबसे तेज़ तरीका है ? यह आपके द्वारा प्रोग्रामिंग के प्रकार पर निर्भर करता है। यदि आपका एप्लिकेशन हर समय चल रहा है तो आप इवेंट लॉग को बार-बार पूछताछ के बजाय कुछ घटनाओं के लिए सदस्यता ले सकते हैं। – Hans

0

बस एफवाईआई, अगर आप इवेंट व्यूअर से अंतिम एक्सएक्स घटनाएं चाहते हैं, तो आपको EventLogReader का उपयोग करने की आवश्यकता नहीं है। मैं ईएलआर का उपयोग नहीं करना पसंद करता क्योंकि यह Vista/Windows2008/Win7 तक सीमित है। .NET में पुरानेस्कूल EventLog ऑब्जेक्ट का उपयोग करके ऐसा करने के लिए, आप केवल "प्रविष्टियां" ऑब्जेक्ट पर इंडेक्सर का उपयोग कर सकते हैं। निम्नलिखित स्निपेट में उदाहरण:

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

      Console.WriteLine(msg) 
     } 
संबंधित मुद्दे