2011-11-05 23 views
6

私はnginx + UWSGI + pythonを実行しているサーバーを持っています。 UWSGIはフラグがセットされたデーモンとして実行されています:--daemonize /var/log/uwsgi.logすべてのアプリケーションエラーを記録します。nginx + uwsgiでPythonにログインする方法

私は、pythonのprintステートメントを使用するとエラーが発生した場合、ログに書き込みますが、エラーが発生した場合にのみ気付きました。どのような状況でも、標準のPythonロギングライブラリはログに影響を与えていないようです。

どのように私はUWSGIログを使用するようにPythonロギングライブラリを指していますか?

答えて

4

ログハンドラとして使用logging.StreamHandler

+3

あなたの答えは詳細ではありませんが、それは正しい道を私に導きました。この回答は、私が使用した方法について説明しています:http://stackoverflow.com/questions/1383254/logging-streamhandler-and-standard-streams – elkelk

+0

@elkelk:延長できますか?私はフィルタを必要とせず、この方法でログに記録しようとしました。それでもファイルには何も印刷されません。 –

+0

私はDockerのコンテナに関しても同様の問題があります。 http://stackoverflow.com/questions/35511839/how-to-force-applications-stdout-logs-through-uwsgiを見てください。 – msgre

2

uWSGIはWSGIサーバであり、そのようなものとして、それはキーwsgi.errorsを使用して、ホスト呼び出し可能なアプリケーションに渡さenviron辞書にストリームを渡します。あなたが裸のwsgiアプリを書いているなら、そのストリームに書くことは仕事をするべきです。 wsgiインターフェイスを抽象化するフレームワークを使用している場合(そして、そのサウンドによって、printは通常、デーモンプロセスで閉じられてログファイルに決して送られないsys.stdoutに書き込みます)おそらくそのフレームワークがどのようにエラーログを処理するかを調べる必要があります。

関連する問題