web-dev-qa-db-ja.com

python3とuWSGIを使用した標準出力のロギング

python 2 flaskアプリがuWSGIの背後で実行されており、supervisordによって管理されています。ログはflaskアプリ。これらのログはuWSGIによって取得され、supervisordによってファイルに書き込まれます。uWSGIログは/ dev/stderrに書き込まれます。以下のsupervisordconfを参照してください。

[program:uwsgi]
command = uwsgi --ini /etc/uwsgi.conf --master
directory = /app
autostart = true
autorestart = true
stdout_logfile = /var/log/myapplication/application.log
stdout_logfile_maxbytes = 50000000
stdout_logfile_backups = 3
stderr_logfile = /dev/stderr
stderr_logfile_maxbytes = 0
stopsignal = INT

これはうまくいきます!アプリケーションログとuWSGIログをうまく分離しました。

python 3にアップグレードしました。アプリケーションログがuWSGIのstderrに格納され、uWSGIログと混合されることを除いて、これはすべて正常に行われました。

UWSGIドックをトロールしましたが、python 2とpython 3の間でこの変更の理由を見つけることができませんでした。

ここで提案されているように、ソケットを定義するときにリダイレクトを試みました http://lists.unbit.it/pipermail/uwsgi/2016-February/008383.html しかし、それはすべてをリダイレクトするだけです(アプリケーションとuWSGIログ)から/dev/null

私もこれを見つけました http://lists.unbit.it/pipermail/uwsgi/2016-January/008353.html しかし、pyimport-sharedについては何も見つかりませんでした。

誰かが何が起こっているのか知っていますか?

私のuWSGIconfは、それが役に立ったらここにあります。

[uwsgi]
uid = www-data
gid = www-data
module = application:application

socket = /run/uwsgi.sock

single-interpreter = true
enable-threads = true
buffer-size = 16384

processes = 4

ありがとう

19
Chris Wynne

これは通常、pythonアプリケーションのロギング構成と関係があります。ストリームハンドラーを構成するときは、ext://sys.stdoutstream値を使用して、その出力がstdoutを指していることを確認してください。 。

1
2ps