मेरे पास एक बहुत ही सरल संरचना है। लेकिन मेरे दो लॉगिंग हैंडलर में से केवल एक मेरे मॉड्यूल से लॉगिंग कर रहा है:
Program.py, support_module1.py, support_module2.py
#program.py
import support_module1 as SM1
import support_module1 as SM2
log = logging.getLogger(__name__)
logging.basicConfig(
filename='/logs/TestLog.log',
filemode='w',
level='DEBUG',
format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
handlers=[logging.FileHandler(r'/logs/TestLog.log')])
stdout_handler = logging.StreamHandler(sys.stdout)
stdout_handler.setLevel(logging.INFO)
log.addHandler(stdout_handler)
log.debug("shows in file")
log.info("shows in file and in stdout")
SM1.function1()
SM2.function2()
मॉड्यूल
#support_module1.py
mod1_log = logging.getLogger(__name__)
function1():
mod1_log.debug("shows in file")
mod1_log.info("should show in file and in stdout, but only goes to file")
#support_module2.py
mod2_log = logging.getLogger(__name__)
function2():
mod2_log.debug("shows in file")
mod2_log.info("should show in file and in stdout, but only goes to file")
जब मैं दौड़ता हूं तो मुझे मिलता है:
shows in file and in stdout
मैं उम्मीद कर रहा हूँ:
shows in file and in stdout
should show in file and in stdout, but only goes to file
should show in file and in stdout, but only goes to file
कोई मुझे बताओ मैं गलत क्या कर रहा हूँ?
1 उत्तर
होफलिंग ने स्पष्ट रूप से समझाया कि क्यों और कैसे ठीक किया जाए। शुक्रिया!
Program.py में, आप logging.getLogger(name) को कॉन्फ़िगर कर रहे हैं। यह केवल program.py नाम के लकड़हारे को प्रभावित करेगा और इस प्रकार केवल program.py के अंदर ही लॉग रिकॉर्ड करेगा। मॉड्यूल1.py के अंदर लॉगिंग.getLogger(नाम) मॉड्यूल1.py नामक एक अलग लकड़हारा लौटाएगा, जो प्रोग्राम.py में कॉन्फ़िगरेशन से अप्रभावित है। फिक्स बहुत सरल है - logging.getLogger(नाम) के साथ program.py में logging.getLogger() कर सकते हैं। यह इसके बजाय रूट लॉगर को कॉन्फ़िगर करेगा। -होफलिंग
संबंधित सवाल
नए सवाल
python
पायथन एक बहु-प्रतिमान है, गतिशील रूप से टाइप किया हुआ, बहुउद्देशीय प्रोग्रामिंग भाषा है। यह एक साफ और एक समान वाक्यविन्यास सीखने, समझने और उपयोग करने के लिए त्वरित होने के लिए डिज़ाइन किया गया है। कृपया ध्यान दें कि अजगर 2 आधिकारिक तौर पर 01-01-2020 के समर्थन से बाहर है। फिर भी, संस्करण-विशिष्ट पायथन सवालों के लिए, [अजगर -२.०] या [अजगर -३.x] टैग जोड़ें। पायथन वेरिएंट (जैसे, ज्योथन, PyPy) या लाइब्रेरी (उदा।, पांडस और न्यूमपी) का उपयोग करते समय, कृपया इसे टैग में शामिल करें।