मैं वर्तमान में पाइथन में काफी जटिल प्रणाली का निर्माण कर रहा हूं, और जब मैं डिबगिंग कर रहा हूं तो मैं अक्सर कई स्क्रिप्ट में सरल प्रिंट स्टेटमेंट डालता हूं। एक सिंहावलोकन रखने के लिए मैं अक्सर फ़ाइल नाम और लाइन नंबर मुद्रित करना चाहता हूं जहां प्रिंट स्टेटमेंट स्थित है। मैं निश्चित रूप से मैन्युअल रूप से ऐसा कर सकते हैं, या कुछ इस तरह के साथ:पायथन डीबगिंग: फ़ाइल नाम और लाइन नंबर प्राप्त करें जिससे एक फ़ंक्शन कहा जाता है?
from inspect import currentframe, getframeinfo
print getframeinfo(currentframe()).filename + ':' + str(getframeinfo(currentframe()).lineno) + ' - ', 'what I actually want to print out here'
जो की तरह कुछ प्रिंट:
बाहर प्रिंट करना चाहते हैंfilenameX.py:273 - क्या मैं वास्तव में यहाँ
इसे और अधिक आसान बनाने के लिए, मैं की तरह कुछ करने के लिए सक्षम होना चाहते हैं:
print debuginfo(), 'what I actually want to print out here'
तो मैं कहीं एक समारोह में डाल दिया और कर की कोशिश की:
from debugutil import debuginfo
print debuginfo(), 'what I actually want to print out here'
print debuginfo(), 'and something else here'
दुर्भाग्य से, मैं:
debugutil.py:3 - what I actually want to print out here
debugutil.py:3 - and something else here
यह, फ़ाइल नाम और लाइन नंबर है जिस पर मैं समारोह परिभाषित बाहर प्रिंट के बजाय जिस लाइन पर मैं debuginfo() को कॉल करता हूं। यह स्पष्ट है, क्योंकि कोड debugutil.py फ़ाइल में स्थित है।
तो मेरा प्रश्न वास्तव में है: मैं फ़ाइल नाम और लाइन नंबर कैसे प्राप्त कर सकता हूं जिससे यह debuginfo() फ़ंक्शन कहा जाता है? सभी सुझावों का स्वागत है!
उपयोग 'लॉगिंग' मॉड्यूल और फॉर्मेटर को कॉन्फ़िगर करें: https://docs.python.org/2/library/logging.html#logrecord-attributes। टॉरनाडो वेब फ्रेमवर्क में वास्तव में एक प्रारूप बहुत समान है, इसलिए आप शायद उनके कोड का उपयोग कर सकते हैं: http://tornado.readthedocs.org/en/latest/_modules/tornado/log.html#LogFormatter – Blender