2009-02-24 10 views
10

मेरे एएसपीनेट अनुप्रयोगों में, मैंने आमतौर पर त्रुटि लॉग करने के लिए Application_Error वैश्विक ईवेंट हैंडलर का उपयोग किया है और उपयोगकर्ता को उपयोगकर्ता के अनुकूल त्रुटि पृष्ठ पर रीडायरेक्ट किया है।एएसपी.NET त्रुटि

हालांकि, मैंने ELMAH पढ़ा है और यह दिलचस्प लगता है, एप्लिकेशन_इरर सरल दृष्टिकोण की तरह लगता है।

मैंने अन्य प्रश्न पढ़े हैं जहां मेरे समेत लोगों ने एक तरीका या दूसरा सुझाव दिया है। मैं क्या सोच रहा हूं कि अगर किसी दूसरे का उपयोग करने के लिए कोई महत्वपूर्ण लाभ है और क्यों?

+1

पहले कभी ELMAH के बारे में नहीं सुना ... यह बहुत अच्छा है। मैं इसे ध्यान में रख रहा हूं। इस lib में मुझे पेश करने के लिए –

+0

+1 –

उत्तर

8

एल्मा एक शानदार परियोजना है और हम इसे हमारे सभी एएसपी.NET अनुप्रयोगों के लिए उपयोग करते हैं। न केवल यह आपके लिए अनचाहे त्रुटियों को लॉग करता है, यह पूरे मूल पृष्ठ को पकड़ता है जिसे उपयोगकर्ता ने देखा, जिसमें आपके लिए बहुत सारी जानकारी है।

इसमें ईमेल समर्थन, आरएसएस फ़ीड (दोनों आइटम और डाइजेस्ट) है और इसमें एक आकर्षक कंसोल है।

कॉन्फ़िगरेशन और एक डीएल संदर्भ में 3 लाइनों के लिए, मैं कहूंगा कि यह एक स्लैम डंक है।

1

मुझे लगता है कि ईएलएमएएच का मुख्य दोष यह है कि आपको जो चाहिए वह अधिक हो सकता है। यदि यह आपके कार्यान्वयन में आपके से अधिक जानकारी लॉगिंग और संग्रहीत कर रहा है, तो यह भंडारण और प्रसंस्करण में एक अनावश्यक ओवरहेड है। आपको यह भी सोचने की जरूरत है कि आप ELMAH के कंसोल तक पहुंच कैसे सुरक्षित करते हैं क्योंकि उन अपवाद विवरणों में आपके ऐप के रसदार विवरण हो सकते हैं (जो कठिन नहीं होने की आवश्यकता है, लेकिन यह चिंता है कि आपके पास पहले नहीं था)।

दूसरी तरफ, आपके स्वयं के कार्यान्वयन संभवत: उस अतिरिक्त जानकारी को लॉग इन करने के लिए बढ़ेगा जब आप यह तय कर लें कि कुछ जिद्दी बग की आवश्यकता है, और क्या आप वास्तव में उस समय के दूसरे भाग के शेविंग के बारे में परवाह करते हैं त्रुटि पृष्ठ प्रदर्शित किया जाना है? संभावना है कि आप अंततः ELMAH के अपने संस्करण का निर्माण कर लेंगे, तो क्यों न केवल ELMAH का उपयोग करें और स्वयं को समय बचाएं।

मैं अनुशंसा करता हूं कि यदि आप ELMAH का उपयोग करने के बजाय अपनी त्रुटि लॉगिंग लिखना चाहते हैं, तो आप इसे कम से कम मॉड्यूल में डालकर ग्लोबल.एक्सएक्स में एप्लिकेशन_इरर में डाल दें। बस अपने मॉड्यूल की इनिट विधि में एप्लिकेशन की त्रुटि ईवेंट की सदस्यता लें, और आप web.config में एक पंक्ति के साथ किसी अन्य एप्लिकेशन में आसानी से अपने त्रुटि हैंडलिंग कोड का पुन: उपयोग कर सकते हैं।

मुझे एएसपी.नेट की स्वास्थ्य निगरानी के माध्यम से किसी अपवाद लॉगिंग को संभालने में भी उपयोगी लगता है। यह web.config में लॉगिंग के प्रकार और स्तर को नियंत्रित करना आसान बनाता है, और प्रयासों में लॉग इन किए गए अपवादों को लॉगिंग करने की अनुमति देता है ... एप्लिकेशन_इरर तक पहुंचने के बिना पकड़ें। WebRequestErrorEvent को विस्तारित करने वाली एक कस्टम हैंडलएक्सप्शनवेन्ट क्लास बनाएं, और आप उन ईवेंट को किसी भी कैच ब्लॉक में बना और बढ़ा सकते हैं जहां आप वाकई जानना चाहते हैं कि अपवाद होने के बावजूद अपवाद हुआ।