找到一个解决方案:
import logging
from flask import Flask
app = Flask(__name__)
logger = logging.getLogger('werkzeug')
handler = logging.FileHandler('test.log')
logger.addHandler(handler)
@app.route("/")
def index():
logger.info("Here's some info")
return "Hello World"
if __name__ == '__main__':
app.run(host='0.0.0.0', port=80)
其他示例:
logger.info("Some text for console and log file")
except Exception as ue:
logger.error("Unexpected Error: malformed JSON in POST request, check key/value pair at: ")
logger.error(ue)
来源:
https://docstrings.wordpress.com/2014/04/19/flask-access-log-write-requests-to-file/
如果链接失效:
你可能会感到困惑,因为将处理程序添加到Flask的app.logger中并不能捕获你在控制台中看到的输出,例如:
127.0.0.1 - - [19/Apr/2014 18:51:26] "GET / HTTP/1.1" 200 -
这是因为app.logger是针对Flask的,而那些输出来自于底层WSGI模块Werkzeug。
要访问Werkzeug的记录器,我们必须调用logging.getLogger()并给它Werkzeug使用的名称。这允许我们使用以下内容记录请求到访问日志:
logger = logging.getLogger('werkzeug')
handler = logging.FileHandler('access.log')
logger.addHandler(handler)
# Also add the handler to Flask's logger for cases
# where Werkzeug isn't used as the underlying WSGI server.
# This wasn't required in my case, but can be uncommented as needed
# app.logger.addHandler(handler)
当然,您可以添加自己的格式和其他处理程序。