2008-11-24 14 views
24

लॉग 4j & लॉग 4नेट जैसे लॉगिंग फ्रेमवर्क में आपके पास जानकारी के विभिन्न स्तरों को लॉग करने की क्षमता है। अधिकांश स्तरों के स्पष्ट इरादे होते हैं (जैसे कि "डीबग" लॉग बनाम "त्रुटि" बनाम है)। हालांकि, एक चीज जो मैं हमेशा डरपोक रहा हूं वह मेरी लॉगिंग को "घातक" के रूप में वर्गीकृत कर रहा था।लॉगिंग करते समय त्रुटि कब होती है?

किस प्रकार की त्रुटियां इतनी गंभीर हैं कि उन्हें घातक के रूप में वर्गीकृत किया जाना चाहिए? हालांकि यह मामूली मामला संचालित है, लेकिन कुछ नियम-अंगूठे क्या हैं जिनका उपयोग आप किसी अपवाद को घातक या बस त्रुटि के रूप में दर्ज करने के दौरान करते समय करते हैं?

उत्तर

30

मुझे लगता है कि आपका एप्लिकेशन कोई और उपयोगी काम नहीं कर सकता है, तो घातक त्रुटियों पर विचार करें। गैर-घातक त्रुटियां तब होती हैं जब कोई समस्या होती है लेकिन आपका एप्लिकेशन अभी भी कार्यक्षमता या प्रदर्शन के निम्न स्तर पर भी कार्य करना जारी रख सकता है।

घातक त्रुटियों के उदाहरण में शामिल हैं:

  • प्रवेश डिवाइस पर डिस्क स्थान से बाहर चल रहा है और आप प्रवेश रखने के लिए आवश्यक कर रहे हैं।
  • क्लाइंट एप्लिकेशन में नेटवर्क कनेक्टिविटी का कुल नुकसान।
  • कोई डिफ़ॉल्ट उपयोग नहीं होने पर कॉन्फ़िगरेशन जानकारी गुम हो रही है।

गैर घातक त्रुटियों में शामिल हैं:

  • एक सर्वर जहां एक ही सत्र किसी कारण से विफल रहता है लेकिन आप अभी भी अन्य ग्राहकों को सेवा कर सकते हैं।
  • एक नया सत्र स्थापित किया जा सकता है, जैसे खोया सत्र, जैसे एक विघटित त्रुटि।
  • यदि डिफ़ॉल्ट मान का उपयोग किया जा सकता है तो गुम कॉन्फ़िगरेशन जानकारी।
+0

नेटवर्क कनेक्टिविटी का नुकसान घातक नहीं हो सकता है। यह अस्थायी हो सकता है। –

+0

मेरा मतलब था कि "वसूली योग्य नहीं" या "पुनर्प्राप्त करने में बहुत लंबा समय लगे", इसलिए गैर-घातक त्रुटियों में अंतःक्रियात्मक संस्करण शामिल है। – paxdiablo

+0

अच्छा जवाब, लेकिन एक बात - नेटवर्क कनेक्टिविटी का नुकसान अस्थायी या घातक होने पर एक एप्लिकेशन आसानी से कैसे निर्धारित कर सकता है? – vikingsteve

6

कोई त्रुटि गुम हो जाती है या स्थिति होती है जिसके लिए एप्लिकेशन बस जारी नहीं रह सकता है। संभावित उदाहरण एक अनुपलब्ध आवश्यक config.file हैं या जब कोई अपवाद 'बुलबुले अप' होता है और एक अनचाहे अपवाद हैंडलर द्वारा पकड़ा जाता है

1

यदि मेरा अगला चरण एप्लिकेशन को समाप्त करने के लिए है, या केवल बाद में काम नहीं कर रहा है तो मैं घातक का उपयोग करूंगा। यदि एप्लिकेशन बैच का हिस्सा है या कई प्रक्रियाएं चल रही हैं, तो यह पता लगाने के लिए उपयोगी हो सकता है कि क्या हुआ।

यदि वसूली का मौका है (उदाहरण के लिए, थोड़ी देर के लिए रिट्री के साथ नेटवर्क कनेक्शन का नुकसान) मैं घातक का उपयोग नहीं करता।

यदि मेरे पास मुख्य थ्रेड द्वारा सक्रिय एकाधिक सेवा धागे हैं और उनमें से एक कुछ खराब इनपुट के कारण विफल रहता है लेकिन एप्लिकेशन अभी भी नए अनुरोधों की सेवा कर सकता है, तो मैं इसे घातक नहीं मानता।

1

यदि आपका आवेदन दुर्घटनाग्रस्त हो जाता है, तो यह उत्तर छोटा और मीठा बनाने के लिए, मैं उस घातक पर विचार करूंगा। यदि आप डेटाबेस या आवश्यक सेवा जैसे किसी महत्वपूर्ण संसाधन से कनेक्ट नहीं हो सकते हैं, तो यह घातक होगा। कुल मिलाकर, मैं कहूंगा कि यदि यह आपके एप्लिकेशन को सही तरीके से चलने से रोकता है और उपयोगकर्ता को प्रभावित करता है, तो मैं इसे घातक त्रुटि के रूप में वर्गीकृत करता हूं।

लेकिन त्रुटियों को वर्गीकृत करने के लिए सबसे महत्वपूर्ण तरीका लगातार C++ Coding Standards में अंगूठे का नियम 69 के रूप में ऐसी की एक नियम का पालन करने के लिए है:

"डिजाइन के शुरू में एक, व्यावहारिक, सुसंगत, और तर्कसंगत त्रुटि हैंडलिंग नीति का विकास करना, और फिर इसके साथ चिपके रहें। "

+0

यदि एप्लिकेशन क्रैश हो गया है, तो तथ्य को लॉग इन करने में थोड़ा देर हो चुकी है! –

+1

हालांकि, आप दुर्घटना के बारे में कुछ जानकारी लॉग इन करने में सक्षम होंगे। – kevindaub

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