web-dev-qa-db-ja.com

journalctlからのバッファリングされていないログ出力を表示する

いくつかのsystemdサービスを定義しています。ディスクとsystemdジャーナルの両方にログを記録します。systemdジャーナルはjournalctl -n 0 -fu myserviceを使用して監視できます。ただし、journalctl tailコマンドから表示されるログは、ディスクログよりも数分遅れていることがよくあります。デーモンを手動で実行し、そのログをコンソールの標準出力に出力すると、ログがすぐに表示されるため、これはデーモンが使用する実際のログ構成とは関係がないことを確認しました。

サービスがログを生成したらすぐに、journalctlからのログ出力をどのように確認できますか?完全にバッファリングされていないか、ラインバッファリングされているかは許容されます。

5
amoe

多分それはあなたのデーモンとバッファリングされるロギングに使用されるsystemdの間のパイプですか?おそらくこれは ユニットとして実行されているpythonスクリプトの出力は故障しているが、シェルは影響を受けていないように見える の複製です。アドバイスは次のとおりです。

書き込みまたはPYTHONUNBUFFERED環境の後にsys.stdout.flush()を追加すると、この問題が解決します

同じアドバイスがあります Systemdジャーナルにpythonが表示されない3印刷

2
jhutar