Pythonスクリプトの出力がファイルに渡されませんでした。

Pythonスクリプトの出力がファイルに渡されませんでした。

Pythonスクリプトがあります。SimpleLoggerassys.stdoutがありますoutput_stream

logger = SimpleLogger(level=LogLevel.DEBUG)

コンソールで実行するとログが正しく表示されますが、出力をファイルにリダイレクトするたびにターゲットに何も見つかりません。

私はいくつかのアプローチを試しました。

  1. python server.py > /tmp/x.log 2>&1
  2. Python server.py > /tmp/x.log

どちらの場合も/tmp/x.log空です。

私も試してみましたが、nohup python server.py何も書いていませんでしたnohup.out

答え1

これはバッファリングによるものかもしれません。十分な出力が蓄積されている場合にのみ、ファイルに内容が表示されます。 Pythonで説明されているように、バッファリングされpython -uていない出力を要求したり、空でPYTHONUNBUFFERED=ない文字列で環境変数を設定したりできます。コマンドライン文書化するか、各通貨または.flush()同様.debug()の通貨の後に通貨を追加します。

関連情報