Flask doesn't print to console
我是flask的新手,我正尝试添加打印信息以调试服务器端代码。
使用debug = True启动Flask应用程序时,我无法将任何信息打印到控制台
我尝试改用日志记录,但没有成功。
那么如何使用控制台调试烧瓶程序。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | @app.route('/getJSONResult', methods=['GET', 'POST']) def getJSONResult(): if request.method == 'POST': uut = request.form['uut'] notes = request.form['notes'] temperature = request.form['temperature'] logging.info("enter getJSONReuslt") print('enter getJSONReuslt') filter_by_query = {k: v for k, v in { 'uut': uut, 'notes': notes, 'temperature': temperature}.items() if v !=""} s = session.query(UUT_TEST_INFO).filter_by(**filter_by_query).first() return jsonify(s.serialize) if __name__ == '__main__': app.secret_key = ''.join(random.choice( string.ascii_uppercase + string.digits) for x in range(32)) app.debug = True app.run(host='127.0.0.1', port=5000) > 127.0.0.1 - - [07/Jun/2017 15:20:48]"GET /qyer HTTP/1.1" 200 - > 127.0.0.1 - - [07/Jun/2017 15:20:48]"GET /static/css/bootstrap.min.css HTTP/1.1" 200 - > 127.0.0.1 - - [07/Jun/2017 15:20:48]"GET /static/js/bootstrap.min.js HTTP/1.1" 200 - > 127.0.0.1 - - [07/Jun/2017 15:20:51]"GET /static/css/bootstrap.min.css.map HTTP/1.1" 200 - > 127.0.0.1 - - [07/Jun/2017 15:21:58]"POST /getJSONResult HTTP/1.1" 500 - |
我修复了服务器端500错误的问题,现在请求获取200代码,并且控制台显示以下信息
1 2 3 4 5 6 7 8 | $ python project.py INFO:werkzeug: * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit) INFO:werkzeug: * Restarting with stat WARNING:werkzeug: * Debugger is active! INFO:werkzeug: * Debugger pin code: 158-624-607 INFO:werkzeug:127.0.0.1 - - [08/Jun/2017 11:33:33]"GET /qyer HTTP/1.1" 200 - INFO:root:Enter getJSONResult INFO:werkzeug:127.0.0.1 - - [08/Jun/2017 11:33:43]"POST /getJSONResult HTTP/1.1" 200 - |
仍然没有来自打印命令的信息
尝试一下,看看是否有帮助:
对于python2:
1 2 3 4 5 | from __future__ import print_function import sys print('This is error output', file=sys.stderr) print('This is standard output', file=sys.stdout) |
对于python3,您无需从以后的print_function中导入:
1 2 3 4 | import sys print('This is error output', file=sys.stderr) print('This is standard output', file=sys.stdout) |
查看是否有助于打印到控制台。
您可以强制直接从打印中刷新标准输出:
1 | print('enter getJSONReuslt', flush=True) |
这样,您不必打印到
您的问题的原因是行缓冲。行缓冲使I / O效率更高,但缺点是在某些情况下不能立即显示打印内容。
默认情况下,日志记录级别为警告。因此,您将不会看到级别为
1 2 | import logging logging.basicConfig(level=logging.DEBUG) |
有相同的打印问题。在
您可以在开发模式下使用应用程序实例,因为日志记录级别设置为DEBUG
在生产模式下,您需要使用更高的服务器级别,或者可以将日志记录级别设置为DEBUG
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | from flask import Flask import logging app = Flask(__name__) logging.basicConfig(level=logging.DEBUG) @app.route('/') def hello_world(): app.logger.info('Processing default request') return 'Hello World!' if __name__ == '__main__': app.run() |
本文讨论登录烧瓶https://www.scalyr.com/blog/getting-started-quickly-with-flask-logging/