2016-06-22 7 views
2

のpython3のprint文をログに記録していないし、それは完全に正常に動作します。しかし、helloworld.pyの中には、ログとして機能するいくつかのprintステートメントがあります。たとえば、ネットワーク要求が到着したときや、データベース値が更新されたときなどです。私はそうのようなhelloworld.pyを実行すると:PM2は私が</p> <p><code>pm2 start helloworld.py</code></p> <p>のように、バックグラウンドでのPythonプログラムを実行するために、PM2を使用してい

python3 helloworld.py

これらすべてのprint文が表示され、私は自分のアプリケーションをデバッグすることができます。

pm2 logs helloworld

を実行しているときしかし、これらのprint文のどれも現れません。

答えて

7

を実行することですを参照してください。あなたはこれをもう少し前に理解しましたが、私が同じ問題を抱えていたときにGoogleのトップヒットの1つでしたので、見つけたものを追加すると思いました。

pythonがsys.stdoutをどのようにバッファリングするかに問題があるようです。いくつかのプラットフォーム/インスタンスでは、pm2またはnohupによって呼び出されると、プロセスが終了するまでsys.stdoutストリームがフラッシュされないことがあります。 "-u"引数をPythonインタプリタに渡すと、sys.stdoutのバッファリングが停止します。 pm2のprocess.jsonでは、 "interpreter_args": "-u"を追加しました。現在はログが正常に取得されています。

+0

私は 'interpreter_args'を' pm2'コマンドラインオプションとして動作させることができませんでした。そこで、私は 'python -u myscript.py'を呼び出し、' pm2 start'をbashスクリプトと呼ぶbashスクリプトを作成しました。 – ubershmekel

0

フォルダ#1 HOME/.pm2 /ログを確認してください

例えば、ここでフォルダ構造のセクションを参照してください:http://pm2.keymetrics.io/docs/usage/quick-start/

また、スクリプトからの相対での明示的なログフォルダで設定ファイルを使用することを検討してください。 (PM2がそれを使用する前にこのフォルダが存在している必要があります。)http://pm2.keymetrics.io/docs/usage/application-declaration/

{ 
"apps": [ 
    { 
     "script": "app/server.js", 
     "log_date_format": "YYYY-MM-DD HH:mm Z", 
     "error_file": "logs/server.web.error.log", 
     "out_file": "logs/server.web.out.log", 
    ... 
これらのログファイルを追跡する

良い方法は、この質問はので、多分、数ヶ月古いですが、尾

tail -f logs/*.log 
+0

あなたの例はNodeプロジェクトを参照していますが、問題はPythonに関するものです。 –

関連する問題