आइए हम एक पूरी तरह से जटिल स्टैकट्रेस बनाएं, ताकि यह प्रदर्शित हो सके कि हमें पूर्ण स्टैकट्रेस मिलती है:
def raise_error():
raise RuntimeError('something bad happened!')
def do_something_that_might_error():
raise_error()
पूर्ण स्टैकट्रेस लॉगिंग
अपने मॉड्यूल के लिए एक लकड़हारा स्थापित करना सबसे अच्छा अभ्यास है। यह मॉड्यूल का नाम पता करेगा और स्तरों को बदलने में सक्षम होगा (अन्य विशेषताओं के बीच, जैसे हैंडलर)
import logging
logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger(__name__)
और हम त्रुटि प्राप्त करने के लिए इस लकड़हारे का उपयोग कर सकते हैं:
try:
do_something_that_might_error()
except Exception as error:
logger.exception(error)
कौन सा लॉग:
ERROR:__main__:something bad happened!
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
File "<stdin>", line 2, in do_something_that_might_error
File "<stdin>", line 2, in raise_error
RuntimeError: something bad happened!
और इसलिए जब हमें कोई त्रुटि होती है तो हमें वही आउटपुट मिलता है:
>>> do_something_that_might_error()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 2, in do_something_that_might_error
File "<stdin>", line 2, in raise_error
RuntimeError: something bad happened!
सिर्फ स्ट्रिंग हो रही है
यदि आप वास्तव में सिर्फ स्ट्रिंग चाहते हैं, तो स्ट्रिंग को traceback.format_exc
लॉग करने का प्रदर्शन करते हुए, इसके बजाय फ़ंक्शन का उपयोग करें:
import traceback
try:
do_something_that_might_error()
except Exception as error:
just_the_string = traceback.format_exc()
logger.debug(just_the_string)
कौन सा लॉग:
DEBUG:__main__:Traceback (most recent call last):
File "<stdin>", line 2, in <module>
File "<stdin>", line 2, in do_something_that_might_error
File "<stdin>", line 2, in raise_error
RuntimeError: something bad happened!
log_error(err)
फ़ंक्शन लिख रहा हूं ।