Flask:无法获得gunicorn记录所有文件

时间:2017-03-02 17:19:16

标签: python logging flask

关于SO有几个类似的问题,我已经将它们全部红了但不知怎的,我不能让我的gunicorn日志文件显示我感兴趣的所有信息:

所以,考虑这3个相关文件:

run.py

from app import app


if __name__ == '__main__':
    app.run(
        passthrough_errors=False,
        threaded=True
    )

应用程序/ __初始化__。PY

import logging
from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config.from_object('config')

handler = logging.StreamHandler()
handler.setLevel(logging.INFO)

app.logger.addHandler(handler)
app.logger.level = logging.DEBUG
app.logger.handlers.extend(logging.getLogger("gunicorn.info").handlers)

db = SQLAlchemy(app)

import views, models

views.py

@app.before_request
def before_request():
    app.logger.info('Body: %s', request.get_data())
    ...
    ...

运行应用程序的命令:

gunicorn -w 4 run:app --access-logfile /Users/adimian/bla.log \ 
--log-file /Users/mondrian/bla.log --error-log /Users/mondrian/error.log

问题:请求的主体不会转到任何日志文件,而是在控制台中打印。其他一切都归于正确的文件,但不是正文......

我也不想在配置中提供日志文件路径,但是它应该通过将它作为命令行参数传递给gunicorn来工作,如上面的例子所示。

1 个答案:

答案 0 :(得分:0)

您是否检查过处理程序是否实际为空? GUnicorn的记录器是gunicorn.error,而不是gunicorn.info。我在我的申请中做了类似的事情:

import logging
from flask import Flask

app = Flask(__name__)

root = logging.getLogger()
root.handlers = logging.getLogger('gunicorn.error').handlers
root.setLevel(logging.INFO)
...

这对我来说很好;所有日志记录都发送到gunicorn错误日志。