लॉगिंग
पायथन में पहले से ही एक उत्कृष्ट निर्मित लॉगिंग मॉड्यूल है । आप यहां लॉगिंग टेम्प्लेट का उपयोग करना चाह सकते हैं ।
लॉगिंग मॉड्यूल आपको महत्वपूर्ण स्तर निर्दिष्ट करता है; डिबगिंग के दौरान आप सब कुछ लॉग कर सकते हैं, जबकि सामान्य ऑपरेशन के दौरान आप केवल महत्वपूर्ण चीजों को लॉग कर सकते हैं। आप चीजों को बंद और चालू कर सकते हैं।
अधिकांश लोग बस डिबग करने के लिए मूल प्रिंट स्टेटमेंट का उपयोग करते हैं, और फिर प्रिंट स्टेटमेंट को हटा देते हैं। उन्हें छोड़ना बेहतर है, लेकिन उन्हें अक्षम करना; फिर, जब आपके पास एक और बग होता है, तो आप बस सब कुछ फिर से सक्षम कर सकते हैं और अपने लॉग को देख सकते हैं।
यह उन प्रोग्रामों को डीबग करने का सबसे अच्छा तरीका हो सकता है, जिन्हें जल्दी से करने की ज़रूरत है, जैसे कि नेटवर्किंग प्रोग्राम जिन्हें नेटवर्क कनेक्शन के दूसरे छोर से पहले जवाब देने की आवश्यकता होती है और बाहर चला जाता है। आपके पास डिबगर को एकल-चरण करने के लिए अधिक समय नहीं हो सकता है; लेकिन आप बस अपना कोड चला सकते हैं, और सब कुछ लॉग इन कर सकते हैं, फिर लॉग्स पर ताकना और यह पता लगा सकते हैं कि वास्तव में क्या हो रहा है।
संपादित करें: टेम्प्लेट का मूल URL था: http://aymanh.com/python-debugging-techniques
यह पृष्ठ गायब है, इसलिए मैंने इसे आर्काइव में सहेजे गए स्नैपशॉट के संदर्भ के साथ प्रतिस्थापित कर दिया है । http://web.archive.org/web/20120819135307/http://aymanh.com/python-debugging-teppiques
मामले में यह फिर से गायब हो जाता है, यहां वे टेम्पलेट हैं जिनका मैंने उल्लेख किया है। यह ब्लॉग से लिया गया कोड है; मैंने इसे नहीं लिखा।
import logging
import optparse
LOGGING_LEVELS = {'critical': logging.CRITICAL,
'error': logging.ERROR,
'warning': logging.WARNING,
'info': logging.INFO,
'debug': logging.DEBUG}
def main():
parser = optparse.OptionParser()
parser.add_option('-l', '--logging-level', help='Logging level')
parser.add_option('-f', '--logging-file', help='Logging file name')
(options, args) = parser.parse_args()
logging_level = LOGGING_LEVELS.get(options.logging_level, logging.NOTSET)
logging.basicConfig(level=logging_level, filename=options.logging_file,
format='%(asctime)s %(levelname)s: %(message)s',
datefmt='%Y-%m-%d %H:%M:%S')
# Your program goes here.
# You can access command-line arguments using the args variable.
if __name__ == '__main__':
main()
और यहाँ उसका स्पष्टीकरण है कि उपरोक्त का उपयोग कैसे करें। फिर, मुझे इसका श्रेय नहीं मिलता है:
डिफ़ॉल्ट रूप से, लॉगिंग मॉड्यूल महत्वपूर्ण, त्रुटि और चेतावनी संदेश प्रिंट करता है। इसे बदलने के लिए ताकि सभी स्तर मुद्रित हों, उपयोग करें:
$ ./your-program.py --logging=debug
Debug.log नामक फ़ाइल में लॉग संदेश भेजने के लिए, उपयोग करें:
$ ./your-program.py --logging-level=debug --logging-file=debug.log