web-dev-qa-db-ja.com

Systemd Pythonサービスがすべての出力をsyslogに送信しない

カスタムサービスがあり、すべてのstdoutとstderrを構成ファイルのsyslogに送信するように明示的に呼び出しましたが、syslogとジャーナルの両方に一部の出力しか表示されません(これらは一貫しています)。

私は必死でサービスファイルで次のことを行いました。

StandardOutput=syslog+console
StandardError=syslog+console

サービスはpythonスクリプトであり、「print」ステートメント(Python 2.7)を使用してstdoutに書き込みます。これらのアイテムは、etherから失われたようですが、他のコマンド出力は両方とも正しくsyslogに書き込みますスクリプトをインタラクティブに実行すると、期待どおりにすべてがstdoutに表示されます。

私の知識に欠けているものは何ですか?

6
fileinster

JdeBPのコメントは正しい解決策でした。

Systemd Pythonサービスがすべての出力をsyslogに送信しない

解決策は、-uオプションを使用して、標準ストリームが出力をバッファリングせずに送信するようにします。

4
fileinster