With my Procfile like this:
web: gunicorn app:app \
--bind "$HOST:$PORT" \
--debug --error-logfile "-" \
--enable-stdio-inheritance \
--reload \
--log-level "debug"
is it in any way possible to get python print
statements to be logged to stdout / bash? I am using the bottle
framework here as well, if that affects anything.
It turns out the print
statements were actually getting through, but with delay.
The gunicorn docs for --enable-stdio-inheritance note to set the PYTHONUNBUFFERED
, which I thought I had, but it seems with wrong syntax.
I solved it using a .env
file with my foreman
setup to set the variable like this:
PYTHONUNBUFFERED=TRUE
In python 3, adding flush=True
in each print statement works for my flask/gunicorn app.
E.g.
gunicorn --bind 0.0.0.0:8080 server --log-level debug
No particular flags are required.
See if this helps.
Please try below command:
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 debug
It did work for me.
Please specify log-level
to debug
(default info
)http://docs.gunicorn.org/en/stable/settings.html#loglevel,
Also, specify capture-output
flag (default false)http://docs.gunicorn.org/en/stable/settings.html#capture-output.
You should be able to watch logs in error log file.
来源:https://stackoverflow.com/questions/27687867/is-there-a-way-to-log-python-print-statements-in-gunicorn