使用我的Procfile:
web: gunicorn app:app \
--bind "$HOST:$PORT" \
--debug --error-logfile "-" \
--enable-stdio-inheritance \
--reload \
--log-level "debug"
是否可以将python print
语句记录到stdout / bash?我也在这里使用bottle
框架,如果这会影响任何事情。
答案 0 :(得分:17)
事实证明,print
陈述实际上是通过了,但有延迟。
设置PYTHONUNBUFFERED
的{{3}}注释,我认为我有,但似乎语法错误。
我使用我的.env
设置的foreman
文件解决了这个问题,将变量设置为:
PYTHONUNBUFFERED=TRUE
答案 1 :(得分:5)
请尝试以下命令:
gunicorn --workers 3 --bind 127.0.0.1:5000 --error-logfile /var/log/gunicorn/error.log --access-logfile /var/log/gunicorn/access.log --capture-output --log-level info
它确实对我有用。
请指定log-level
至debug
(默认info
)http://docs.gunicorn.org/en/stable/settings.html#loglevel,
还要指定capture-output
标志(默认为false)http://docs.gunicorn.org/en/stable/settings.html#capture-output。
您应该能够查看错误日志文件中的日志。
答案 2 :(得分:5)
在python 3中,在每个打印语句中添加flush=True
对我的flask / gunicorn应用程序有效。
例如
gunicorn --bind 0.0.0.0:8080 server --log-level debug
不需要特殊标志。
看看是否有帮助。
答案 3 :(得分:1)
我将Python3与Flask一起使用。
我直接使用print('log info')
而不是print('log info', flush=True)
。
我只将capture_output
设置为True
并设置了errorlog
文件即可。
注意that:
捕获输出
中的指定文件
--capture-output
False
将stdout / stderr重定向到错误日志
我认为您需要指定一个错误日志文件以获取标准输出。
这是我的配置文件gunicorn.config.py
设置
accesslog = 'gunicorn.log'
errorlog = 'gunicorn.error.log'
capture_output = True
然后使用gunicorn app_py:myapp -c gunicorn.config.py
等值命令行为
gunicorn app_py:myapp --error-logfile gunicorn.error.log --access-logfile gunicorn.log --capture-output