मैं थोड़ी देर के लिए काम कर रहे कोड के एक टुकड़े में लॉगिंग (फ़ाइल के बजाय कंसोल करने के लिए) जोड़ने की कोशिश कर रहा हूं। थोड़ा सा पढ़ने के बाद मेरे पास एक पैटर्न है जो मुझे लगता है कि काम करना चाहिए, लेकिन मुझे पूरा यकीन नहीं है कि मैं गलत कहां जा रहा हूं।एकाधिक मॉड्यूल में पाइथन लॉगिंग
मैं (सरलीकृत जाहिर है) निम्नलिखित तीन फ़ाइलें:
controller.py
import my_module
import logging
from setup_log import configure_log
def main():
logger = configure_log(logging.DEBUG, __name__)
logger.info('Started logging')
my_module.main()
if __name__ == "__main__":
main()
setup_log.py
import logging
def configure_log(level=None, name=None):
logger = logging.getLogger(name)
logger.setLevel(level)
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.DEBUG)
chFormatter = logging.Formatter('%(levelname)s - %(filename)s - Line: %(lineno)d - %(message)s')
console_handler.setFormatter(chFormatter)
logger.addHandler(console_handler)
return logger
my_module.py
import logging
def main():
logger = logging.getLogger(__name__)
logger.info("Starting my_module")
print "Something"
if __name__ == "__main__":
main()
जब मैं वें चलाता हूं एम, लॉगिंग करने के लिए केवल पहला कॉल कंसोल के लिए आउटपुट उत्पन्न करता है - 'लॉगिंग शुरू'। लॉगिंग करने के लिए दूसरा कॉल - 'मेरा मॉड्यूल शुरू करना' अभी पारित हो गया है।
मैंने क्या गलत समझा/उलझाया है?
यदि आप उन्हें बिल्कुल उसी तरह कॉन्फ़िगर करना चाहते हैं तो आप दो अलग-अलग लॉगर्स ('__main__' और' my_module') को कॉन्फ़िगर क्यों कर रहे हैं? क्यों न केवल 'getLogger() 'कॉन्फ़िगर करें और हर जगह इसका उपयोग करें? – abarnert