Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Python

पायथन लॉगिंग:एक गाइड

आपने अभी-अभी एक एप्लिकेशन बनाया है और देखा है कि कुछ काम नहीं कर रहा है। आपके द्वारा अभी-अभी लागू की गई सुविधा ऐसा व्यवहार कर रही है जिसकी आपने अपेक्षा नहीं की थी। तुम्हे क्या करना चाहिए? आप इस समस्या का समाधान कैसे करेंगे?

सॉफ़्टवेयर विकास में, प्रोग्रामर अपने सॉफ़्टवेयर के चलने के दौरान ईवेंट को ट्रैक करने के लिए लॉगिंग पर भरोसा करते हैं। इससे उन्हें समस्याओं के स्रोत को प्रभावी ढंग से ट्रैक करने में मदद मिलती है, यदि वे उत्पन्न होती हैं।

इस गाइड में, हम इस बारे में बात करने जा रहे हैं कि आपको एप्लिकेशन लॉग क्यों रखने चाहिए और आप अपने कार्यक्रमों में घटनाओं का ट्रैक रखने के लिए पायथन लॉगिंग मॉड्यूल का उपयोग कैसे कर सकते हैं।

आपको लॉग क्यों रखने चाहिए

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

पायथन में, डेवलपर्स अक्सर print() . पर भरोसा करते हैं उनके कोड को लॉग करने के लिए स्टेटमेंट। यह एक अभ्यास है - शुरुआती से लेकर विशेषज्ञों तक - इसका उपयोग करने के लिए और अच्छे कारण के लिए दोषी है। एक print() कथन का उपयोग करना आसान है; यह आसान है।

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

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

पायथन लॉगिंग मॉड्यूल का उपयोग कैसे करें

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

81% प्रतिभागियों ने कहा कि बूटकैंप में भाग लेने के बाद उन्हें अपनी तकनीकी नौकरी की संभावनाओं के बारे में अधिक आत्मविश्वास महसूस हुआ। आज ही एक बूटकैंप से मिलान करें।

बूटकैंप शुरू करने से लेकर अपनी पहली नौकरी खोजने तक, औसत बूटकैंप ग्रेड ने करियर संक्रमण में छह महीने से भी कम समय बिताया।

स्टूडेंट्स =["मार्टिन", "लुईस", "टेरी", "बार्ट"]ग्रेड्स =[92, 78, 72, 38]पास_फेल =[] फॉर आई इन रेंज(0, लेन(छात्र)):प्रिंट ("{}" के लिए ग्रेड की गणना। )) और:pass_fail.append(False) print("{} उनकी परीक्षा में असफल रहा है।".format(students[i)))print("छात्र ग्रेड की गणना की गई है। उनकी परीक्षा में असफल रहे।")

उपरोक्त कोड यह गणना करता है कि चौथी कक्षा के पांच छात्रों में से प्रत्येक ने अपनी परीक्षा उत्तीर्ण की है या नहीं। हमारे कार्यक्रम में, हम तीन सूचियाँ घोषित करते हैं। एक सूची प्रत्येक छात्र का नाम संग्रहीत करती है; एक अन्य सूची प्रत्येक छात्र द्वारा अर्जित ग्रेड को संग्रहीत करती है; अंतिम सूची स्टोर करती है कि कोई छात्र अपनी परीक्षा उत्तीर्ण या अनुत्तीर्ण हुआ है या नहीं।

जब हम अपना प्रोग्राम चलाते हैं, तो निम्नलिखित लौटाया जाता है:

मार्टिन के लिए ग्रेड की गणना करना। मार्टिन ने अपनी परीक्षा उत्तीर्ण कर ली है। लुईस के लिए ग्रेड की गणना करना। लुईस ने अपनी परीक्षा उत्तीर्ण की है। टेरी के लिए ग्रेड की गणना करना। टेरी ने अपनी परीक्षा उत्तीर्ण की है। बार्ट के लिए ग्रेड की गणना करना। बार्ट उनकी परीक्षा में विफल रहा है।

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

शुरू करने के लिए, आइए हमारे कार्यक्रम के शीर्ष पर लॉगिंग मानक पुस्तकालय जोड़ें:

<पूर्व>आयात लॉगिंग

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

  • महत्वपूर्ण:गंभीर त्रुटियों को प्रदर्शित करने के लिए उपयोग किया जाता है (लॉगिंग.क्रिटिकल ())
  • त्रुटि:समस्या दिखाने के लिए प्रयुक्त (लॉगिंग.त्रुटि ())
  • चेतावनी:अप्रत्याशित व्यवहार दिखाने के लिए प्रयुक्त (लॉगिंग.चेतावनी ())
  • जानकारी:यह दिखाने के लिए उपयोग किया जाता है कि कोई प्रोग्राम काम कर रहा है (लॉगिंग.इन्फो ())
  • डीबग:कोड डीबग करने के लिए प्रयुक्त (लॉगिंग.डीबग ())

लॉगिंग लाइब्रेरी के लिए डिफ़ॉल्ट कॉन्फ़िगरेशन चेतावनी है, इसलिए हमें इस कोड का उपयोग करके इसे रीसेट करना होगा:

आयात logging.basicConfig(level=logging.DEBUG)

अब हम अपना कोड डीबग करना शुरू करने के लिए तैयार हैं। आइए हमारे print() को बदलें बयान जो हमें बताते हैं कि एक ग्रेड की गणना की जा रही है या हमारा कार्यक्रम डिबगिंग स्टेटमेंट के साथ समाप्त हो गया है:

<पूर्व>आयात logging. रेंज में (0, लेन (छात्र)):logging.debug("{} के लिए ग्रेड की गणना। ने अपनी परीक्षा पास कर ली है।".format(students[i])) else:pass_fail.append(False) print("{} उनकी परीक्षा में फेल हो गया है।".format(students[i]))logging.debug("Student Grades("छात्र ग्रेड) गणना कर ली गई है। परीक्षा में अनुत्तीर्ण छात्रों के अभिभावकों को ईमेल भेजने के लिए आगे बढ़ रहे हैं।")

जब हम अपना कोड चलाते हैं, तो निम्नलिखित लौटाया जाता है:

DEBUG:root:MartinMartin के लिए ग्रेड की गणना ने उनकी परीक्षा उत्तीर्ण कर ली है।DEBUG:root:LouisLewis के लिए ग्रेड की गणना ने उनकी परीक्षा उत्तीर्ण कर ली है।DEBUG:root:TerriTerri के लिए ग्रेड की गणना ने उनकी परीक्षा उत्तीर्ण कर ली है। उनकी परीक्षा में असफल रहा है।DEBUG:root:छात्र ग्रेड की गणना की गई है। परीक्षा में अनुत्तीर्ण होने वाले छात्रों के माता-पिता को ईमेल भेजने के लिए आगे बढ़ रहे हैं।

आप देख सकते हैं कि हमारे आउटपुट में वही सामग्री है जो पहले थी। हालाँकि, संदेश "के लिए ग्रेड की गणना कर रहा है ..." और हमें यह सूचित करने वाला संदेश कि ग्रेड की गणना की गई है, अलग-अलग दिखाई देते हैं। टेक्स्ट "DEBUG:root:" उन कथनों से पहले प्रकट होता है।

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

इस मामले में, संदेश "[छात्र]" उनकी परीक्षा में विफल रहा है" महत्वपूर्ण जानकारी है जो हमें बताती है कि प्रत्येक छात्र ने अपनी परीक्षा उत्तीर्ण की है या नहीं। बाकी सब कुछ यह देखने के लिए उपयोगी है कि हमारा प्रोग्राम कैसे चल रहा है, लेकिन उपयोगकर्ता के लिए उपयोगी नहीं है। इसलिए, हम लॉगिंग कॉल का उपयोग करके इन कथनों को ट्रैक करते हैं।

किसी फ़ाइल में लॉग कैसे रखें

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

आपको बस अपने लॉगिंग हैंडलर कॉन्फ़िगरेशन लाइन में एक फ़ाइल नाम तर्क शामिल करना है और आपका प्रोग्राम स्वचालित रूप से लॉग को एक फ़ाइल में सहेज लेगा:

<पूर्व>आयात logging.basicConfig(level=logging.DEBUG, filename="student_data.log")…

जब हम अपना कोड चलाते हैं, तो हमारे लॉग हमारे द्वारा निर्दिष्ट फ़ाइल नाम में जोड़ दिए जाएंगे। यदि हम “student_data.log” फ़ाइल खोलते हैं, तो निम्नलिखित वापस आ जाता है:

डीबग:रूट:मार्टिनडेबग के लिए ग्रेड की गणना:रूट:लेविसडेबग के लिए ग्रेड की गणना:रूट:टेरिडेबग के लिए ग्रेड की गणना:रूट:बार्टडीबग के लिए ग्रेड की गणना:रूट:छात्र ग्रेड की गणना की गई है। परीक्षा में अनुत्तीर्ण होने वाले छात्रों के माता-पिता को ईमेल भेजने के लिए आगे बढ़ रहे हैं।

ध्यान दें कि हमारे डिबग आउटपुट में केवल वही संदेश होते हैं जिन्हें हमने logging.debug() का उपयोग करके लॉग के रूप में निर्दिष्ट किया है। तरीका। यह उपयोगी है क्योंकि यह हमें प्रोग्राम आउटपुट को अलग करने में मदद करता है - जिसे print() . का उपयोग करके दर्शाया जाता है कथन - डिबग लॉग से।

आपके लॉग में कोई प्रविष्टि कब जोड़ी गई है, इसका ट्रैक रखने के लिए आप एक पैरामीटर भी जोड़ सकते हैं। हम निम्नलिखित कोड का उपयोग करके ऐसा कर सकते हैं:

logging.basicConfig(level=logging.DEBUG,filename="student_data.log",format="%(asctime)s:%(levelname)s:%(message)s")

यह कोड निम्नलिखित को हमारी student_data.log फ़ाइल में जोड़ता है:

2020-06-18 08:27:50,123:DEBUG:मार्टिन के लिए ग्रेड की गणना2020-06-18 08:27:50,123:DEBUG:लुईस के लिए ग्रेड की गणना2020-06-18 08:27:50,123:DEBUG:ग्रेड की गणना टेरी के लिए2020-06-18 08:27:50,123:डीबग:बार्ट2020-06-18 के लिए ग्रेड की गणना 08:27:50,124:डीबग:छात्र ग्रेड की गणना की गई है। परीक्षा में अनुत्तीर्ण होने वाले छात्रों के अभिभावकों को ईमेल भेजने के लिए आगे बढ़ रहे हैं।

अब हम जानते हैं कि हमारे कोड की प्रत्येक पंक्ति को कब निष्पादित किया गया था। एक लंबे कार्यक्रम में, यह डेटा विशेष रूप से उपयोगी होगा क्योंकि यह हमें उस क्रम को समझने में मदद करेगा जिसमें हमारा कोड चल रहा है और हमारे कोड की गति।

निष्कर्ष

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


  1. पायथन दुभाषिए:एक चरण-दर-चरण मार्गदर्शिका

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

  1. पायथन प्रोग्राम में लॉग इन करना

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

  1. पायथन में लॉग इन करना

    इस लेख में, हम पायथन में लॉग इन करने और सुरक्षा और सुरक्षा के विभिन्न चरणों के बारे में जानेंगे। सबसे पहले, हमें लॉगिंग मॉड्यूल को आयात करने की आवश्यकता है, इसके बाद लॉगर का उपयोग करके checj=k वर्तमान स्थिति और लॉग संदेशों का उपयोग करना होगा। हमारे पास गंभीरता के 5 स्तर हैं, अर्थात् - चेतावनी जानक