gpt4 book ai didi

python - 使用 Foreman 进行 Flask 日志记录

转载 作者:太空狗 更新时间:2023-10-29 21:29:13 24 4
gpt4 key购买 nike

我正在尝试设置一个支持 Heroku 的 Flask 应用程序,但我不知道如何打开日志记录。

没有 Foreman,我可以创建一个 helloworld 应用程序,如 Flask tutorial 中所述:

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
app.logger.debug('A value for debugging')
app.logger.warning('A value for warning')
return "Hello World!"

if __name__ == "__main__":
app.run(debug=True)

像这样启动它:

python hello.py

并登录标准输出。

当我关注 Heroku tutorial ,但是,没有 app.run 行:

import os
from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello():
app.logger.debug('A value for debugging')
app.logger.warning('A value for warning')
return 'Hello World!'

所以我不知道如何在 Debug模式下运行和/或获取日志输出:

foreman start -p 5000

简介:

web: gunicorn hello:app

最佳答案

Flask 应用程序的默认日志记录配置在 Debug模式和生产模式下是不同的。

在您的第一个示例中,您处于 Debug模式。在这种情况下,Flask 定义了一个日志处理程序,它将所有级别为 logging.DEBUG 或更高级别的消息记录到 stderr

第二个示例未处于 Debug模式。当未启用 Debug模式时,Flask 会创建一个记录器对象,但不会向其添加任何处理程序,因此不会打印任何内容。

对于 Foreman 和 Heroku,您需要将日志发送到 stdoutstderr,因此您需要做的就是添加一个 StreamHandler您选择的日志记录级别:

import os
from flask import Flask

app = Flask(__name__)

# log to stderr
import logging
from logging import StreamHandler
file_handler = StreamHandler()
app.logger.setLevel(logging.DEBUG) # set the desired logging level here
app.logger.addHandler(file_handler)

@app.route('/')
def hello():
app.logger.debug('A value for debugging')
app.logger.warning('A value for warning')
return 'Hello World!'

或者,如果您愿意,您也可以不执行任何操作,只为 Foreman/Heroku 控制的应用程序启用 Debug模式,尽管我不建议对生产应用程序这样做:

from flask import Flask
app = Flask(__name__)
app.debug = True

关于python - 使用 Foreman 进行 Flask 日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20457567/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com