systemd serviceで始まったプログラムがありますmyprogram.service
。問題は、ログをログファイルに直接書き込むことです/opt/myprogram/logs.txt
。 journalctl
.
myprogram.service
特定のファイルのテキストをログにパイプするようにSystemdに指示するように変更することは可能ですか?
ベストアンサー1
tail
まず、とを組み合わせてみましょうlogger
。
tail -f /opt/myprogram/logs.txt | logger
tail
ファイルからすべての新しい行を継続的に読み取り、標準出力にコピーします。ロガーはこれらの行をシステムログに送信します。
編集する:
パイプがバッファリングされているため、ロガーはしばらく(4Kbのデフォルトバッファがいっぱいになるまで)スリープ状態になる可能性があります。この問題は、stdbuf
バッファリングを有効または無効にすることで解決できますunbuffer
。
stdbuf -i0 -o0 tail -f /opt/myprogram/logs.txt | logger