2012-11-29 9 views
7

हमारे आवेदन में कुछ परिस्थितियां हैं जहां गैर-घातक त्रुटियां होती हैं और एप्लिकेशन ठीक हो जाता है।क्या एप्लिकेशन इवेंट स्रोत को लिखना स्वीकार्य है?

किसी एक सूची सूची में आइटम को पॉप्युलेट करते समय कुछ आयात योग्य वस्तुओं को सही ढंग से पहचानने में विफल होने का एक उदाहरण। त्रुटियां ऐप को क्रैश नहीं करेंगी लेकिन उपयोगकर्ता को सतर्क किया जाएगा कि कुछ आइटम लोड होने में विफल रहे।

इस मामले में, त्रुटि इवेंट लॉग में एक चेतावनी के रूप में त्रुटि लॉग है। यह एक गैर-घातक त्रुटि है जिसे ऐप से ठीक हो जाता है, लेकिन ईवेंट लॉग पर लॉग इन करने से हमें मूल त्रुटि देखने की आवश्यकता होती है।

हमारी समस्या यह है कि सॉफ़्टवेयर को पावर उपयोगकर्ता खाते से स्थापित करने में सक्षम होना आवश्यक है। एक व्यवस्थापक खाता नहीं है, हमारे पास आवेदन के लिए कस्टम इवेंट स्रोत बनाने की क्षमता नहीं होगी।

इसका उद्देश्य "एप्लिकेशन" ईवेंट स्रोत (जो पहले से ही एप्लिकेशन इवेंट लॉग में दिखाई देता है) में त्रुटियों को लिखना है। ऐसा करने से, हालांकि, निम्नलिखित के समान पाठ भी शामिल किया जा सकता है।

स्रोत से इवेंट आईडी 0 के लिए विवरण नहीं मिला। या तो घटक जो इस घटना को उठाता है आपके स्थानीय कंप्यूटर पर स्थापित नहीं है या स्थापना दूषित है। आप स्थानीय कंप्यूटर पर घटक स्थापित या मरम्मत कर सकते हैं।

ऐसा इसलिए है क्योंकि जब हम इसे लिखते हैं तो EventID 0 होता है। इस दृष्टिकोण को नौकरी मिल जाएगी, लेकिन क्या कोई बेहतर तरीका है? क्या एप्लिकेशन इवेंट स्रोत के लिए EventID निर्दिष्ट करने के लिए कोई गैर-व्यवस्थापक तरीका है यह इंगित करने के लिए कि यह हमारे ऐप से आया है?

उत्तर

0

त्रुटि आप के रूप में देखते में पढ़ने स्रोत से इवेंट आईडी 0 का विवरण आवेदन नहीं मिला। या तो घटक जो इस घटना को उठाता है आपके स्थानीय कंप्यूटर पर स्थापित नहीं है या स्थापना दूषित है। आप स्थानीय कंप्यूटर पर घटक स्थापित या मरम्मत कर सकते हैं। एप्लिकेशन स्रोत की पंजीकृत इवेंट संदेश फ़ाइल का परिणाम इवेंट आईडी 0 के लिए कोई प्रविष्टि नहीं है। संदेश जो आप देखते हैं वह संदेश आईडी फ़ाइल से टेम्पलेट प्राप्त करने का परिणाम है और ईवेंट पेलोड के साथ स्वरूपित करता है।

मैं सामान्य रूप से अनुशंसा नहीं करता कि आप उस स्रोत को हाइजैक करें जो आपके पास नहीं है। जो भी उन घटनाओं का उपभोग कर रहा है, उनके पास क्या मतलब है और वे कौन सी जानकारी लेते हैं, इसके बारे में विशिष्ट अपेक्षाएं हैं।

के बारे में क्या एप्लिकेशन इवेंट स्रोत के लिए EventID निर्दिष्ट करने के लिए कोई गैर-व्यवस्थापक तरीका है यह इंगित करने के लिए कि यह हमारे ऐप से आया है?, आप उम्मीद करते हैं कि ईवेंट आईडी विनिर्देश का क्या अर्थ होगा? स्रोत है जो यह निर्धारित करता है कि ईवेंट कहां से आया था।

संपादित करें:

आप क्योंकि है कि स्रोत एक घटना संदेश पंजीकृत फ़ाइल नहीं है कि क्या आप एक घटना 0 के अलावा अन्य आईडी प्रदान की परवाह किए बिना घटना दर्शक में त्रुटि प्राप्त होगी।और यहां तक ​​कि अगर ऐसा होता है, तो आपको या तो ईवेंट आईडी का उपयोग करना होगा जिसमें संदेश फ़ाइल में प्रवेश हो (घटनाओं के उपभोक्ताओं को भ्रमित करना) या ईवेंट आईडी जिनके पास प्रवेश नहीं है और फिर भी त्रुटि प्राप्त होती है।

+0

मैंने कुछ पढ़ा है: इवेंट आईडी के साथ इवेंट आईडी संयुक्त रूप से पहचानता है कि किस प्रकार की घटना हो रही है। संक्षेप में: मुझे चेतावनी त्रुटि नहीं है लेकिन मुझे ऐसे स्रोत का उपयोग नहीं करना चाहिए जिसे मैंने नहीं बनाया था। मैं एक (गैर व्यवस्थापक स्थापना इत्यादि) बनाने की स्थिति में नहीं हूं, इसलिए मुझे उम्मीद है कि इस तरह की घटनाओं के लिए उपलब्ध एक इवेंट स्रोत ढूंढना है या अन्य लोग लॉगिंग के लिए एक अलग तंत्र का उपयोग कर रहे हैं। विचार? – MoSlo

+0

यदि आप .NET 4.5 का उपयोग कर रहे हैं तो आप इवेंटसोर्स क्लास (http://msdn.microsoft.com/en-us/library/system.diagnostics.tracing.eventsource.aspx) का उपयोग कर पंजीकरण की आवश्यकता के बिना ईटीडब्ल्यू को ईवेंट लिखने के लिए उपयोग कर सकते हैं । नकारात्मकता यह है कि ईवेंट इवेंट लॉग में सहेजे नहीं जाते हैं, इसलिए यदि आप उन घटनाओं को सक्रिय रूप से सुन नहीं रहे हैं तो आप उन्हें नहीं प्राप्त करेंगे। – fsimonazzi

0

आप आवेदन ईवेंट ID एक पैरामीटर के रूप पारित करने में सक्षम हैं: (उदाहरण: 234)

EventLog.WriteEntry("Application", "your log message here", EventLogEntryType.Warning, 234); 

इसके अलावा EventLog.WriteEntry विधि

http://msdn.microsoft.com/en-us/library/xzwc042w.aspx

+1

बस पूर्णता के लिए, मैं यह भी जोड़ने के लिए संपादित करता हूं कि यह * * * इस तरह के * एप्लिकेशन * घटना स्रोत का उपयोग करने के लिए ठीक है। (जब तक आप असहमत न हों कि यह ठीक है!) –

+0

उस उदाहरण में "एप्लिकेशन" संदेश है, घटना स्रोत नहीं। इवेंट स्रोत "डॉटनेट नमूना ऐप" है। public static void WriteEntry ( \t स्ट्रिंग स्रोत, \t स्ट्रिंग संदेश, \t EventLogEntryType प्रकार, \t पूर्णांक eventID ) – fsimonazzi

+0

इस सवाल का जवाब नहीं है। इसके अलावा, इसका परिणाम "स्रोत से इवेंट आईडी 234 के लिए विवरण नहीं मिला .." – user2864740

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