应用程序通过Gunicorn运行时,烧瓶日志无法打印

时间:2018-07-23 17:17:13

标签: python logging flask gunicorn

我创建了一个Flask应用程序,在整个应用程序中,我在每个模块中用行LOGGER = logging.getLogger(__name__)创建了记录器。在应用程序的主模块中是

if __name__ == '__main__':
   app.run(host='0.0.0.0', port=9876)
   # subprocess.call(['gunicorn', 'main:app', '-w', '5', '-b', '0.0.0.0:9876'])

if下的两行分别被注释和未注释,无论我选择是否穿越麻豆角。当不遍历gunicorn时,对端点的请求将导致打印日志。例如:

07-23 10:38 - INFO - 127.0.0.1 - - [23/Jul/2018 10:38:49] "POST /path/to-endpoint HTTP/1.1" 200 -

但是,当您浏览“ gunicorn”时,不会打印出此类日志(尽管会返回请求的预期结果。

此问题与提出的here相似,但是情况截然不同,以至于提议的修复措施无济于事。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我建议指定一个用于记录器的自定义名称。我认为__name__可能会从gunicorn运行时返回不同的内容,您只需指定自己的记录器名称即可在各个模块中使用即可解决。

因此,在获取记录器对象的每个地方,都应像这样创建它:

LOGGER = logging.getLogger('my-logger-name')

my-logger-name是在模块之间应保持相同的任何字符串。