पायथन लॉग में स्टैकट्रेस प्रिंट करें

Payathana Loga Mem Staikatresa Printa Karem



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

उदाहरण 1: ट्रैसबैक मॉड्यूल का उपयोग करके पायथन में स्टैकट्रेस प्रिंट करें

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

दूसरे शब्दों में, एक स्टैक ट्रेस प्रत्येक ऑपरेशन को प्रदर्शित करता है जो उस ऑपरेशन से पहले आया था जिसके परिणामस्वरूप समस्या हुई थी। सबसे महत्वपूर्ण जानकारी हमेशा स्टैक ट्रेस की अंतिम पंक्ति पर रिपोर्ट की जाती है, जो कि गलती की पहचान होने पर होती है। परिणामी त्रुटि में सभी फ़ंक्शन कॉल का उपयोग समस्या का शीघ्रता से पता लगाने और हल करने के लिए किया जा सकता है।







आइए ट्रेसबैक पायथन लाइब्रेरी को आयात करके कोड को लागू करके शुरू करें। फिर, निम्न पंक्ति में, हम एक सरणी बनाते हैं और तत्वों को कुछ मानों के साथ सूचीबद्ध करते हैं। सरणी सूची के मान '7', '8', '9', और '10' हैं। सरणी सूची में चार मान हैं। यह सरणी सूची पहले प्रारंभिक चर 'ए' में सहेजी गई थी।



उसके बाद, हम निम्नलिखित पंक्ति में 'कोशिश' शब्द और मूल्य 'ए = 6' का उपयोग करते हैं। हम अपवादों को प्रबंधित करने के लिए पायथन में कोशिश-छोड़कर ब्लॉक का उपयोग करते हैं। इस दृष्टिकोण का उपयोग उस स्क्रिप्ट को लिखने के लिए किया जाता है जिससे ब्लॉक हेडर में कोई त्रुटि उत्पन्न हो सकती है। सिंटैक्स त्रुटियों के समान अपवाद अनिवार्य रूप से त्रुटियां हैं। किसी प्रोग्राम के अपवाद के दौरान, अपवाद हैंडलिंग अपवाद का जवाब देने का अनूठा कार्य है। स्क्रिप्ट पर लौटते हुए, हम अगली पंक्ति में 'छोड़कर' का उपयोग करते हैं।



को छोड़कर ब्लॉक में, हम 'ट्रेसबैक.प्रिंट एक्स ()' का उपयोग करते हैं जो 'प्रिंटिंग अपवाद' के लिए छोटा है। हम अपवाद बॉक्स के अंदर 'प्रिंट ()' फ़ंक्शन का उपयोग करते हैं जो 'प्रोग्राम एंड' है ताकि अपवाद उत्पन्न होने पर यह कथन प्रिंट हो। अब, यदि प्रयास बॉक्स में कोई अपवाद होता है, तो प्रोग्राम तुरंत ब्लॉक को छोड़कर चला जाता है और जारी रहता है। यदि कोई अपवाद नहीं होता है, तो अपवाद ब्लॉक पूरी तरह से छोड़ दिया जाता है। अब जबकि अपवाद होता है, हम कोड में देख सकते हैं कि मान “6” को कोशिश बॉक्स में दर्ज किया गया था, भले ही वह सरणी सूची में नहीं है। नतीजतन, कोड तुरंत अपवाद बॉक्स में जाता है और आउटपुट डिस्प्ले में 'प्रोग्राम एंड्स' स्टेटमेंट प्रिंट करता है।





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



उदाहरण 2: लॉगिंग.एक्सेप्शन () विधि का उपयोग करके पायथन में स्टैकट्रेस प्रिंट करें

इस उदाहरण में, हम प्रदर्शित करेंगे कि स्टैकट्रेस को आउटपुट करने के लिए पायथन की 'लॉगिंग.एक्सेप्शन ()' विधि का उपयोग कैसे करें। पायथन में लॉगिंग पैकेज हमें त्रुटियों को लॉग करने के साथ-साथ त्रुटियों और अपवादों को रिकॉर्ड करने देता है। लॉगिंग मॉड्यूल हमें 'डीबग', 'जानकारी', 'चेतावनी', 'त्रुटि', और 'महत्वपूर्ण' सहित लॉगिंग मॉड्यूल का चयन प्रदान करते हैं। सरल शब्दों में कहें तो ये अनिवार्य रूप से लॉगिंग मॉड्यूल की परतें हैं। पायथन में एक त्रुटि के साथ अपवाद लॉग करने के लिए, 'लॉगिंग अपवाद ()' फ़ंक्शन का उपयोग करें। यह फ़ंक्शन इस लकड़हारे में ERROR स्थिति के साथ एक रिपोर्ट जोड़ता है। ऐसा माना जाता है कि पैरामीटर डिबगिंग के लिए हैं। अपवाद के बारे में जानकारी लॉगिंग रिपोर्ट से जुड़ी हुई है। एकमात्र स्थान जहां से इस प्रक्रिया को लागू किया जाना चाहिए, वह अपवाद हैंडलर होना चाहिए।

अब, आइए कोड देखें। सबसे पहले, हम दो पुस्तकालयों का आयात करते हैं - जिनमें से पहला लॉगिंग है और दूसरा ट्रेसबैक है। फिर, हम 'लॉगिंग' के साथ 'बेसिक कॉन्फिग' विधि का उपयोग करते हैं और स्तर को 'लॉगिंग.डीबग' के रूप में निर्दिष्ट करते हैं। 'GetLogger ()' विधि का एकमात्र तर्क 'नाम' है। इस प्रकार, हम 'लॉगिंग.गेटलॉगर' फ़ंक्शन का उपयोग करते समय इसका उपयोग करते हैं। यदि कोई नाम दिया गया है, तो उस नाम के साथ लकड़हारे की आवृत्ति का एक संदर्भ उत्पन्न होता है; अन्यथा, रूट वापस आ जाता है। एक ही लॉगर ऑब्जेक्ट को एक ही पहचान के साथ कई getLogger() ऑपरेशंस द्वारा संदर्भित किया जाता है।

फिर, हम कोशिश करने के लिए उपयोग करते हैं, और जैसा कि हम कोशिश ब्लॉक में जानते हैं, हम कोड लिखते हैं जो अपवाद उत्पन्न कर सकता है। इस स्थिति में, हम 'myfunction ()' का उपयोग करते हैं। यदि दी गई स्थिति मेल नहीं खाती है, तो एक अपवाद होता है। फिर, कोड तुरंत ब्लॉक को छोड़कर कूद जाता है। इस अपवाद ब्लॉग में, हम “logging.info” का उपयोग करते हैं। इसके अंदर हम वह संदेश लिखते हैं जिसे हम छापना चाहते हैं जो कि “अपवाद हुआ” है। ऐसा इसलिए है क्योंकि यदि कोई अपवाद होता है, एक त्रुटि होती है तो यह स्क्रीन पर यह संदेश प्रदर्शित करता है। लेकिन अगर त्रुटि नहीं होती है, तो यह पूरे अपवाद संदेश को अनदेखा कर देता है।

हम संदेश के साथ 'exc info=True' भी सेट करते हैं। संपूर्ण स्टैकट्रेस को लॉगिंग में शामिल किया जाएगा जब एक्स जानकारी को ट्रू पर सेट किया जाएगा, जैसा कि 'लॉगर.एक्सेप्शन ()' के साथ होता है। एकमात्र अंतर यह है कि आप केवल लकड़हारे की अदला-बदली करके लॉग स्तर को त्रुटि से किसी अन्य चीज़ पर जल्दी से स्विच कर सकते हैं।

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

कुछ और कोड के बारे में बात करते हैं जो लॉगिंग का उपयोग करता है। अपवाद () विधि लॉगिंग के लिए लाइब्रेरी आयात करके शुरू होती है। अगला, दो चर - 'एम' और 'एन' - आरंभिक हैं और क्रमशः '7' और '0' के मान दिए गए हैं। कोशिश ब्लॉक का उपयोग अब अगले चरण में किया जाता है। इसके भीतर, हम वह कोड लिखते हैं जो अपवाद का कारण बन सकता है। सबसे पहले, हम चर 'ओ' घोषित करते हैं। फिर, हम उस 'm' को 'n' से विभाजित करते हैं। यह एक अपवाद का कारण बनता है क्योंकि भाजक शून्य है और हम किसी भी संख्या को शून्य से विभाजित नहीं कर सकते हैं, जिसका अर्थ है कि त्रुटियां उत्पन्न होंगी। नतीजतन, कोड उस ब्लॉक को छोड़कर कूद जाता है जहां 'लॉगिंग.एरर' का उपयोग किया जाता है। त्रुटि लॉगिंग का स्तर है। यदि कोई अपवाद होता है, तो हम एक संदेश या कथन प्रिंट करते हैं जो कहता है, 'अपवाद हुआ' और हम 'exc info=true' सेट करते हैं। यदि हम इसे सही पर सेट नहीं करते हैं, तो यह केवल अपवाद ब्लॉक को प्रिंट करता है और ट्रेसबैक जानकारी प्रदर्शित नहीं करता है।

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

निष्कर्ष

इस लेख में, हमने पायथन लॉग में स्टैकट्रेस को प्रिंट करने की प्रक्रिया के साथ-साथ स्टैक ट्रेस बनाने के लिए ट्रेसबैक मॉड्यूल का उपयोग करने के तरीके को देखा। पहले उदाहरण में, ट्रेसबैक लाइब्रेरी को इम्पोर्ट किया गया था और ट्राई एंड एक्सेप्ट मेथड्स का इस्तेमाल किया गया था। कोड कोशिश बॉक्स में लिखा गया था। यदि कोई अपवाद होता है, तो यह तेजी से अपवाद ब्लॉक में जाता है और स्क्रीन पर अपवाद विवरण प्रदर्शित करता है। दूसरे उदाहरण में, हमने पहले उदाहरण के समान लॉगिंग का उपयोग किया। अपवाद () विधि लॉगिंग के 'जानकारी' और 'त्रुटि' स्तरों का उपयोग करती है। यदि कोई अपवाद होता है, तो यह एक अपवाद कथन प्रदर्शित करता है।