ログを標準エラーとして出力するプロセスがあり、それをsystemd serviceとして実行しますType=simple
。フィールドStandardError
をStandardOutput
デフォルト値(inherit
およびjournal
)のままにしてフィールドを設定しました。SyslogIdentifier
したがって、ログに指定された識別子を持つサービスログを表示したいと思います。
これらのすべてはほとんどの場合うまく機能します。サービスが非常に長いテキスト行(50KB以上)の出力を開始すると問題が発生します。
systemd(またはロギング)が長いログ行を壊しているようです(確かではありませんが、テストによると、制限は48 KBだと思います)。複数のログメッセージに表示されます。しかし、私のサービスがしばらく(少なくとも数時間)実行され、非常に大きな行が出力された後、ログへのロギングは突然停止します。サービスがまだ正常に実行されていることがわかりますが、まだログメッセージを出力していると思いますが(表示しようとしたり表示しない可能性のあるエラーは表示されませんが)、ログは送信されなくなります。ログ。
私は非常に大きなテキストブロック(基本的にはdd
いくつか)を出力する愚かなシェルスクリプトを使用してこの動作を再現しようとしましたが、単純なテストではこの動作を再現することはできませんでした。/dev/urandom
base64 -w0
何が間違っているのか、他のどのテストを実行できるのかを考えてくれてありがとう。