2011-11-05 15 views
6

के साथ python में लॉग इन करने के लिए कैसे लिखें मेरे पास एक सर्वर nginx + UWSGI + पायथन चल रहा है। यूडब्ल्यूएसजीआई फ्लैग सेट के साथ एक डेमॉन के रूप में चल रहा है: --daemonize /var/log/uwsgi.log जो सभी एप्लिकेशन त्रुटियों को लॉग करता है।nginx + uwsgi

मैंने देखा है कि अगर मैं एक पायथन प्रिंट स्टेटमेंट का उपयोग करता हूं तो यह त्रुटि पर होगा लेकिन यह केवल एक त्रुटि पर होगा। मानक पायथन लॉगिंग लाइब्रेरी किसी भी स्थिति में लॉग को प्रभावित नहीं करती है।

मैं यूडब्ल्यूएसजीआई लॉग का उपयोग करने के लिए पाइथन लॉगिंग पुस्तकालयों को कैसे इंगित करूं?

उत्तर

4

उपयोग logging.StreamHandler प्रवेश हैंडलर

+3

हालांकि आपका उत्तर विस्तृत नहीं था, लेकिन उसने मुझे सही पथ का नेतृत्व किया। यह उत्तर मैंने उपयोग की गई विधि का वर्णन करता है: http://stackoverflow.com/questions/1383254/logging-streamhandler-and-standard-streams – elkelk

+0

@elkelk: क्या आप विस्तार कर सकते हैं? मुझे फ़िल्टर की आवश्यकता नहीं है और इस विधि से लॉग इन करने का प्रयास किया - यह अभी भी फ़ाइल में कुछ भी प्रिंट नहीं करता है। –

+0

मुझे समान समस्या है लेकिन डॉकर कंटेनर के संबंध में। Http://stackoverflow.com/questions/35511839/how-to-force-applications-stdout-logs-through-uwsgi पर एक नज़र डालें – msgre

2

uWSGI के रूप में एक WSGI सर्वर है, और इस तरह के रूप environ dict आवेदन प्रतिदेय उसके द्वारा होस्ट के लिए पारित में एक धारा से गुजरता है, कुंजी wsgi.errors का उपयोग कर। यदि आप एक नंगे wsgi ऐप लिख रहे हैं, तो उस स्ट्रीम को लिखना नौकरी करना चाहिए। यदि आप एक फ्रेमवर्क का उपयोग कर रहे हैं जो wsgi इंटरफ़ेस को बाहर निकालता है (और इसकी आवाज से, आप हैं, print सामान्य रूप से sys.stdout पर लिखेंगे, जो एक डिमोनाइज्ड प्रक्रिया पर बंद हो जाता है और इसे किसी भी लॉग फ़ाइल में कभी नहीं बनायेगा), आप करेंगे शायद यह देखने की जरूरत है कि फ्रेमवर्क त्रुटि लॉगिंग को कैसे संभालता है।

संबंधित मुद्दे