मैं फ्लास्क का उपयोग करने वाले वेब एप्लिकेशन में लॉगिंग जोड़ने की कोशिश कर रहा हूं।फनस्क एप्लिकेशन Gunicorn द्वारा होस्ट किए जाने पर कोई लॉग क्यों नहीं बना रहा है?
जब अंतर्निहित सर्वर (यानी python3 server.py
) का उपयोग करके होस्ट किया गया, तो लॉगिंग कार्य करता है। Gunicorn का उपयोग करके होस्ट किया गया, लॉग फ़ाइल नहीं बनाई गई है।
सरल कोड है जो समस्या reproduces यह एक है:
#!/usr/bin/env python
import logging
from flask import Flask
flaskApp = Flask(__name__)
@flaskApp.route('/')
def index():
flaskApp.logger.info('Log message')
print('Direct output')
return 'Hello World\n'
if __name__ == "__main__":
logHandler = logging.FileHandler('/var/log/demo/app.log')
logHandler.setLevel(logging.INFO)
flaskApp.logger.addHandler(logHandler)
flaskApp.logger.setLevel(logging.INFO)
flaskApp.run()
अनुप्रयोग का उपयोग कहा जाता है:
gunicorn server:flaskApp -b :80 -w 4
--access-gfile /var/log/demo/access.log
--error-logfile /var/log/demo/error.log
जब साइट के मुखपृष्ठ के लिए एक अनुरोध कर रही है, निम्न होता :
मुझे प्रतिक्रिया में अपेक्षित HTTP 200 "हैलो वर्ल्ड \ n" प्राप्त होता है।
/var/log/demo/access.log
में अनुरोध का एक निशान है।/var/log/demo/error.log
वही रहता है (केवल बूट ईवेंट हैं)।टर्मिनल में "प्रत्यक्ष आउटपुट" लाइन है।
कोई '/var/log/demo/app.log' नहीं है। यदि मैं एप्लिकेशन लॉन्च करने से पहले फ़ाइल बना देता हूं, तो फ़ाइल संशोधित नहीं होती है।
ध्यान दें कि:
निर्देशिका
/var/log/demo
पहुँचा जा सकता है (पढ़ने, लिखने, निष्पादित) हर किसी के द्वारा, तो यह अनुमतियाँ मुद्दा नहीं है।यदि मैं दूसरे हैंडलर के रूप में
StreamHandler
जोड़ता हूं, तो अभी भी टर्मिनल में "लॉग संदेश" संदेश का कोई निशान नहीं है, न ही गनिकॉर्न लॉग फ़ाइलों में।pip3 install gunicorn
का उपयोग करके गनिकॉर्न स्थापित किया गया है, इसलिए पाइथन संस्करणों के साथ कोई मेल नहीं होना चाहिए।
क्या हो रहा है?
यह भी ध्यान रखें उत्पादन मोड में है कि कुप्पी रन से गनिकोर्न के तहत डिफ़ॉल्ट, जहां app.logger स्तर WARN पर सेट है, इसलिए आपको app.logger.info() या app.logger.debug() दिखाई नहीं देगा। यदि आप इसे चाहते हैं, तो app.debug = True सेट करें। – patricksurry