मेरे पास अजगर में तीन वर्ग हैं और वे विभिन्न धागे में चलते हैं। मैं सभी वर्गों से एक ही फाइल में आउटपुट करना चाहता हूं। अभी मैंने मुख्य वर्ग में आउटपुट विधि बनाई है और इसे अन्य वर्गों में रचनाकारों के माध्यम से पास कर दिया है। इसे बेहतर तरीके से संभालने का कोई तरीका है? मैं संरचनाकारों को छोड़कर कक्षाओं के बीच लॉगर कैसे पारित कर सकता हूं?पायथन में कक्षाओं के बीच लॉगिंग
शायद पायथन जावा में स्थिर विधि की तरह कुछ का समर्थन करता है, इसलिए मैं सभी तीन वर्गों में Logger.info (संदेश) जैसे लिख सकता हूं?
एक और तरीका है शायद फाइल करने के लिए वैश्विक sys.stdout पुनः निर्देशित किया जा सकता है, यानी निर्दिष्ट करने
logger = open('debug.txt', 'w')
sys.stdout = logger
कॉल तब का उपयोग कर सभी वर्गों में sys.stdout।
आपको क्या लगता है?
@lazyr। जवाब के लिए धन्यवाद। मैं कक्षाओं के बीच लॉग ऑब्जेक्ट को कैसे कर सकता हूं ताकि सभी तीन फाइलें और यह एक ही लॉग फ़ाइल में लिख सके? – yart
मेरे पास उपरोक्त कोड एक अलग फ़ाइल में है, log.py कहें, फिर मैं अपने प्रत्येक मॉड्यूल में "लॉग आयात लॉग से" जाता हूं। पाइथन केवल एक बार मॉड्यूल लोड करता है - पहले के बाद किसी भी आयात कथन को पहले ही लोड किया जा चुका है - इसलिए यह आपके सभी धागे में एक ही लॉग ऑब्जेक्ट होगा। –
@lazyr: 'लॉगिंग' मॉड्यूल के मामले में, आपको ऐसा करने की आवश्यकता नहीं है -' लॉगिंग 'मॉड्यूल स्वयं लॉग इन रखता है जो इसे अपने मॉड्यूल के अंदर बनाता है। आप किसी अन्य मॉड्यूल में फिर से 'logging.getLogger' चला सकते हैं और आपको वही ऑब्जेक्ट मिल जाएगा। – nosklo