मैं dangerous debugging console चालू करने के लिए नहीं देख रहा हूं, लेकिन मेरे आवेदन में 500 त्रुटि हो रही है और मुझे अधिक गहराई से जांच करने के लिए मेरे लिए कोई आउटपुट लिखना प्रतीत नहीं होता है।nginx, uwsgi, फ्लास्क के साथ आसान एप्लिकेशन लॉगिंग/डिबगिंग?
मैंने this exchange on the mailing list देखा, जिसने मुझे to this page on logging errors का नेतृत्व किया।
हालांकि, मैं अभी भी इस बहुत भ्रमित खोजने के लिए और सवालों की एक जोड़ी है:
(1) जो फ़ाइल में सामान नीचे जाना चाहिए?
ADMINS = ['[email protected]']
if not app.debug:
import logging
from logging.handlers import SMTPHandler
mail_handler = SMTPHandler('127.0.0.1',
'[email protected]',
ADMINS, 'YourApplication Failed')
mail_handler.setLevel(logging.ERROR)
app.logger.addHandler(mail_handler)
... बड़े अनुप्रयोगों के लिए "बड़ा हो रहा है" फ़ाइल पैटर्न मानते हुए? __init__.py
? config.py
? run.py
?
(2) मैं वहां विकल्पों से अभिभूत हूं, और यह नहीं बता सकता कि मुझे किसका उपयोग करना चाहिए। स्थानीय पायथन सर्वर डीबग को दोहराने के लिए, किन सेटिंग्स के साथ, मुझे कौन से लॉगर्स चालू करना चाहिए, जब मैं run.py चलाता हूं तो मैं stdout पर जाता हूं? मुझे लगता है कि पृष्ठ में इंटरैक्टिव डीबगर की तुलना में डिफ़ॉल्ट, स्थानीय आउटपुट स्ट्रीम बहुत उपयोगी है। क्या किसी के पास कोई पैटर्न है जो वे किसी nginx परिनियोजन के साथ इसे दोहराने के लिए कुछ लॉग सेट करने पर साझा कर सकते हैं, लॉग पर आउटपुट कर सकते हैं?
(3) क्या मुझे कुछ भी बदलने की जरूरत है, फ्लास्क स्तर पर नहीं, बल्कि nginx में, लॉगिंग सक्षम करने के लिए, मेरी /etc/nginx/sites-available/appname
फ़ाइल में कहें?
अद्यतन
विशेष रूप से, मैं जैसे मैं क्यों, कहते हैं, एक पैकेज काम नहीं कर रहा है, या जहां हो सकता है मेरी सिंटैक्स त्रुटि के रूप में स्थानीय रूप से जब अजगर रन प्राप्त जानकारी के लिए देख रहा हूँ, या क्या चर नहीं करता ' टी मौजूद है:
$ python run.py
Traceback (most recent call last):
File "run.py", line 1, in <module>
from myappname import app
File "/home/me/myappname/myappname/__init__.py", line 27, in <module>
file_handler.setLevel(logging.debug)
File "/usr/lib/python2.7/logging/__init__.py", line 710, in setLevel
self.level = _checkLevel(level)
File "/usr/lib/python2.7/logging/__init__.py", line 190, in _checkLevel
raise TypeError("Level not an integer or a valid string: %r" % level)
जब मैं किसी सर्वर पर फ्लास्क चलाता हूं, तो मैं इसे कभी नहीं देखता। मुझे बस ब्राउज़र में एक यूडब्ल्यूएसजीआई त्रुटि मिलती है, और मुझे पता नहीं है कि कौन सा कोड समस्याग्रस्त था। मुझे बस उपरोक्त की तरह कुछ फ़ाइल में लिखा जाना पसंद है।
मैं भी ध्यान दें कि निम्न लॉगिंग की स्थापना वास्तव में फाइल करने के लिए ज्यादा नहीं लिखा था, यहाँ तक कि जब मैं डीबग स्तर पर जिस तरह से लॉग बारी:
from logging import FileHandler
file_handler = FileHandler('mylog.log')
file_handler.setLevel(logging.DEBUG)
app.logger.addHandler(file_handler)
mylog.log
खाली है, तब भी जब अपने आवेदन त्रुटियों बाहर।
मैं भी जोड़ देंगे __init__.py
में है कि मैं डिबग = निम्न तरीकों से यह सच है स्थापित करने के लिए कोशिश की है:
app = Flask(__name__)
app.debug = True
app.config['DEBUG'] = True
from werkzeug.debug import DebuggedApplication
app.wsgi_app = DebuggedApplication(app.wsgi_app, True)
app.config.from_object('config')
app.config.update(DEBUG=True)
app.config['DEBUG'] = True
if __name__ == '__main__':
app.run(debug=True)
जबकि मेरे config.py फ़ाइल में, मैं है ...
debug = True
Debug = True
DEBUG = True
फिर भी, कोई डिबगिंग नहीं होती है, और बिना लॉगिंग या डिबगिंग के, यह ट्रैक करना मुश्किल है। हिस्सा जहां संचालकों बनाने
uWSGI Error
Python application not found
मैंने आपके अपडेट किए गए प्रश्न के आधार पर अपना उत्तर अपडेट किया। –
क्या आपको कभी यह हल हुआ है? – hafichuk
मैंने नहीं किया। फ्लास्क पर छोड़ दिया गया उत्पादन मशीन नहीं मिल सका। – Mittenchops