मेरे पास एक पैकेज है जिसमें इसमें कई घटक हैं जो लॉगिंग और उपयोगी जानकारी को आउटपुट करने से बहुत लाभान्वित होंगे।पैकेज मॉड्यूल में लॉगिंग सेट करने का कुशल तरीका
import logging
logging.basicConfig(level=DEBUG)
my_function = logging.getLogger("my_function")
my_class = logging.getLogger("my_class")
मैं दृष्टिकोण की एक जोड़ी की कोशिश की है, उनमें से एक बॉयलरप्लेट जोड़ने जा रहा है:
मुझे क्या करना नहीं चाहते कहीं इन पंक्तियों के साथ साथ हर एक फ़ाइल के लिए 'सेटअप' उचित प्रवेश करने के लिए है एक उपयोगिता मॉड्यूल के भीतर एक वर्ग में कोड और कोशिश करते हैं और कुछ इस तरह करते हैं:
from util import setlogging
set_logging()
लेकिन फिर भी ऊपर समाधान मेरे लिए साफ नहीं लगती है और समस्याओं का कारण है क्योंकि setLogger एक __call__
विधि नहीं है जाएगा। मुझे क्या पसंद आया था कि मेरी "set_logging" कक्षा एक कॉन्फ़िगरेशन फ़ाइल के रूप में पढ़ी जाएगी और कुछ डिफ़ॉल्ट मान होंगे, इससे कोई फर्क नहीं पड़ता कि किस स्तर या किस प्रकार का लॉगिंग प्रारूप मैं चाहता हूं कि यह इसे सही तरीके से सेट करेगा।
क्या मेरे पैकेज में बोर्ड भर में उचित लॉगिंग शुरू करने का कोई तरीका है? शायद __init__.py
फ़ाइल में?
और बस के रूप में अत्यधिक शब्द होने के लिए, यह क्या setlogging (अब एक समारोह, नहीं एक वर्ग) लग रहा है जैसे:
def setlogging(config=None):
if config == None:
config = config_options() # sets default values
levels = {
'debug': DEBUG,
'info': INFO
}
level = levels.get(config['log_level'])
log_format = config['log_format']
datefmt = config['log_datefmt']
basicConfig(
level = level,
format = log_format,
datefmt = datefmt)
क्या मुझे अभी भी 'mylogger' तक पहुंचने में सक्षम होने के लिए सेटॉगिंग() को कॉल करने की आवश्यकता नहीं है? भले ही मैं कोशिश करता हूं, मुझे अभी भी एक अपेक्षित विशेषता प्राप्त होती है क्योंकि 'फ़ंक्शन' ऑब्जेक्ट में 'mylogger' कोई विशेषता नहीं है। शायद मैं पूरी तरह से तस्वीर नहीं प्राप्त कर रहा हूं ... – alfredodeza
@alfredo, इसे केवल एक बार बुलाया जाना चाहिए (पैकेज के '__init __। Py' से उद्देश्य के लिए उपयोग करने का सबसे आसान स्थान होगा, क्योंकि आप जानते हैं कि यह हमेशा पैकेज में किसी भी मॉड्यूल में किसी भी कोड से पहले चलता है) और निश्चित रूप से आप उस लॉगर को एक हैंडलर में जोड़ सकते हैं, इसके रूप में आपके फॉर्मेटर को कॉन्फ़िगर किया गया है, जैसा कि कृपया http://docs.python.org/library/logging.html?highlight=logging#configuring-logging पर दिए गए उदाहरण कोड में है। –
धन्यवाद एलेक्स, वास्तव में मदद की! मैं अगले वर्ष आपको पिकॉन में एक बियर खरीदूंगा :) – alfredodeza