आप अपने एएसपी.NET ऐप्स में त्रुटियों (अपवाद) कैसे लॉग करते हैं?

मैं एएसपी.NET एप्लिकेशन में त्रुटियों को लॉग करने का सबसे अच्छा तरीका ढूंढ रहा हूं। अपवाद और वर्तमान अनुरोध के बारे में विस्तृत जानकारी के साथ, मैं अपने आवेदन में त्रुटियों के दौरान ईमेल प्राप्त करने में सक्षम होना चाहता हूं।

मेरी कंपनी में हम ग्लोबल.एक्सएक्स एप्लिकेशन_इरर में सबकुछ पकड़कर, अपना खुद का त्रुटि मेलर इस्तेमाल करते थे। यह "ठीक" था लेकिन बहुत लचीला और न ही विन्यास योग्य था।

हमने हाल ही में एनएलओजी में स्विच किया। यह बहुत अधिक विन्यास योग्य है, हम त्रुटियों के लिए विभिन्न लक्ष्यों को परिभाषित कर सकते हैं, उन्हें फ़िल्टर कर सकते हैं, उन्हें बफर कर सकते हैं (अभी तक कोशिश नहीं की गई)। यह एक बहुत अच्छा सुधार है।

लेकिन मैंने हाल ही में खोज की है कि इस उद्देश्य के लिए नेट फ्रेमवर्क में एक संपूर्ण नेमस्पेस है: System.Web.Management और इसे healthMonitoring अनुभाग।

क्या आपने कभी नेट स्वास्थ्य निगरानी के साथ काम किया है? त्रुटि लॉगिंग के लिए आपका समाधान क्या है?

0
ro fr bn
मैंने System.Web.Management भी देखा है, लेकिन मैंने इसका कभी भी उपयोग नहीं किया है। मुझे यह भी अच्छा लगेगा कि यह अच्छी तरह से काम करता है या नहीं।
जोड़ा लेखक Ben Mills, स्रोत

7 उत्तर

मेरी टीम अपाचे से log4net का उपयोग करती है। यह बहुत हल्का और सेटअप करने में आसान है। सबसे अच्छा, यह web.config फ़ाइल से पूरी तरह कॉन्फ़िगर करने योग्य है, इसलिए एक बार जब आप अपने कोड सेटअप में हुक प्राप्त कर लेते हैं, तो आप web.config फ़ाइल को बदलकर लॉगिंग करने के तरीके को पूरी तरह से बदल सकते हैं।

log4net विभिन्न प्रकार के स्थानों पर लॉगिंग का समर्थन करता है - डेटाबेस, ईमेल, टेक्स्ट फ़ाइल, विंडोज इवेंट लॉग इत्यादि। मेरी टीम ने डेटाबेस में विस्तृत त्रुटि जानकारी भेजने के लिए कॉन्फ़िगर किया है, और संपूर्ण टीम को पर्याप्त जानकारी के साथ एक ईमेल भी भेज दिया है हम यह निर्धारित करने के लिए कि कोड के किस भाग में त्रुटि उत्पन्न हुई थी। फिर हम जानते हैं कि कोड के उस टुकड़े के लिए कौन जिम्मेदार है, और वे अधिक विस्तृत जानकारी प्राप्त करने के लिए डेटाबेस में जा सकते हैं।

0
जोड़ा

मैं एंटरप्राइज़ लाइब्रेरी की लॉगिंग ऑब्जेक्ट्स का उपयोग कर रहा हूं। यह आपको विभिन्न प्रकार के लॉगिंग (फ्लैट फ़ाइल, ई-मेल, और/या डेटाबेस) की अनुमति देता है। यह बहुत अनुकूलन योग्य है और लॉगिंग की कॉन्फ़िगरेशन के लिए अपने web.config को अपडेट करने के लिए एक बहुत अच्छा इंटरफ़ेस है। आमतौर पर मैं ग्लोबल.एक्सएक्स में ऑन त्रुटि से अपना लॉगिंग कॉल करता हूं।

यहां एमएसडीएन का एक लिंक है

0
जोड़ा
मुझे एक साल पहले एक परियोजना के लिए एमएस एंटरप्राइज़ लाइब्रेरी लॉगिंग का उपयोग करने के लिए मजबूर होना पड़ा। यह बहुत ही गड़बड़ कर दिया गया था, और मुझे सटीक विवरण याद नहीं हैं, लेकिन इसमें कुछ न्यूनतम कार्यक्षमता गायब थी जिसे लॉगिंग समाधान में उम्मीद होगी। विजुअल स्टूडियो के लिए एक ऐड-इन है जो web.config को सही तरीके से सेट करने का एकमात्र तरीका है। वह टूल आपके web.config को दोबारा सुधारता है और इसमें से सभी टिप्पणियों को हटा देता है :(
जोड़ा लेखक TechSavvySam, स्रोत

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

उदाहरण के लिए हमारा कोड इस तरह दिखेगा:

Try
  Dim p as New Person()
  p.Name = "Joe"
  p.Age = 30
Catch ex as Exception
  Log.LogException(ex,"Err creating person and assigning name/age")
  Throw ex
End Try

इस प्रकार हमारा लॉगर एक SQL डेटाबेस में आवश्यक सभी जानकारी लिख देगा। कुछ त्रुटियों या अक्सर होने वाली त्रुटियों को देखने के लिए हमारे पास डीबी स्तर पर स्थापित ईमेल अलर्ट हैं। यह हमें यह पहचानने में सहायता करता है कि त्रुटियां कहां से आ रही हैं।

यह वही नहीं हो सकता है जो आप खोज रहे हैं। Global.asax का उपयोग करने के समान एक अन्य दृष्टिकोण हमारे लिए एक कोड इंजेक्शन तकनीक है जैसे AOP PostSharp । यह आपको प्रत्येक विधि की शुरुआत और अंत में या प्रत्येक अपवाद पर कस्टम कोड इंजेक्ट करने की अनुमति देता है। यह एक दिलचस्प दृष्टिकोण है लेकिन मेरा मानना ​​है कि इसमें भारी प्रदर्शन ओवरहेड हो सकता है।

0
जोड़ा

मैं elmah का उपयोग करता हूं। इसमें कुछ वाकई अच्छी सुविधाएं हैं और यहां एक CodeProject आलेख है। मुझे लगता है कि स्टैक ओवरफ्लो टीम भी एल्मा का उपयोग करती है!

0
जोड़ा
मैंने पिछले साल एक ELMAH ट्यूटोरियल लिखा था, जो मुझे लगता है कि इस परिदृश्य का वर्णन अधिक विस्तार से है कोडप्रोजेक्ट आलेख।
जोड़ा लेखक ThomasArdal, स्रोत

मैं log4net का उपयोग करता हूं और जहां भी मैं उम्मीद करता हूं अपवाद मैं इसे उचित स्तर पर लॉग करता हूं। मैं अपवाद को दोबारा नहीं फेंकता क्योंकि यह वास्तव में अच्छे उपयोगकर्ता अनुभव की अनुमति नहीं देता है, वर्तमान स्थिति में आप कम जानकारी प्रदान कर सकते हैं।

मेरे पास Application_Error भी किसी अपवाद को पकड़ने के लिए कॉन्फ़िगर किया गया था जिसकी अपेक्षा नहीं की गई थी और लॉग 4net के माध्यम से त्रुटि को घातक प्राथमिकता के रूप में लॉग किया गया है (ठीक है, 404 का पता चला है और जानकारी के रूप में लॉग इन है क्योंकि वे उच्च गंभीरता नहीं हैं)।

0
जोड़ा

हम EnterpriseLibrary.ExceptionHandling.Logging का उपयोग करते हैं। मुझे इसे लॉग 4नेट से थोड़ा बेहतर पसंद है क्योंकि न केवल हम लॉगिंग को पूरी तरह से नियंत्रित करते हैं, बल्कि हम कॉन्फ़िगरेशन के भीतर थ्रो/नोथ्रो निर्णय को भी नियंत्रित कर सकते हैं।

0
जोड़ा

मैं Log4net का उपयोग कर रहा हूं, जो घातक त्रुटियों के विवरण ईमेल करने के लिए कॉन्फ़िगर किया गया है। यह लॉग फ़ाइल में सब कुछ लॉग करने के लिए भी सेट अप किया गया है, जो समस्याओं को डीबग करने का प्रयास करते समय अमूल्य है। दूसरा लाभ यह है कि यदि वह मानक कार्यक्षमता वह नहीं करती जो आप चाहते हैं, तो कस्टम एपेंडर लिखना काफी आसान है जो आवश्यकतानुसार लॉगिंग जानकारी को संसाधित कर सकता है।

ऐसा कहकर, मैं इसे एक कस्टम त्रुटि हैंडलर के साथ उपयोग कर रहा हूं जो मानक लॉग 4नेट ईमेल - पृष्ठ, सत्र चर, कुकीज़, http सर्वर चर, आदि में शामिल की तुलना में थोड़ी अधिक जानकारी के साथ एक HTML ईमेल भेजता है।

ये दोनों Application_OnError ईवेंट में वायर्ड हैं, जहां अपवाद लॉग 4net में घातक अपवाद के रूप में लॉग किया गया है (जो तब इसे किसी निर्दिष्ट ईमेल पते पर ईमेल किया जाता है), और कस्टम त्रुटि हैंडलर का उपयोग करके भी संभाला जाता है।

सबसे पहले कोडिंग डरावनी ब्लॉग एंट्री से Elmah के बारे में सुना, जिम्मेदारी क्रैश करें , और हालांकि यह वादा करता है कि मैं इसे अभी तक किसी भी प्रोजेक्ट को लागू नहीं कर रहा हूं।

0
जोड़ा
+1 यह बेहतर नहीं कह सकता था!
जोड़ा लेखक Dillie-O, स्रोत