各トランザクションをログに記録する必要があるアプリケーションがあります。クラッシュに至るまでに何が起こったかを記録する必要があるため、すべてのログメッセージがフラッシュされます。同僚と私は、ログメッセージがプロセスを離れたことを保証しながら、バッファリングのパフォーマンス効果を達成する方法に興味を持っていました。
私たちが思いついたのは:
- アプリケーションが書き込み可能なFIFOを作成し、
- 経由でそのFIFOの内容を通常のファイルにリダイレクトします
cat
。
つまり、通常は次のとおりでした。
app --logfile logfile.txt
今でしょ:
mkfifo logfifo
cat logfifo &> logfile.txt &
app --logfile logfifo
このアプローチに落とし穴はありますか?テスト時に機能しましたが、元のアプリケーションがクラッシュした場合でも、メッセージがリダイレクトファイルに到達することを確実に確認したいと考えています。
(アプリケーションのソースコードがないため、プログラミングソリューションは問題外です。また、アプリケーションはに書き込みを行わないstdout
ため、別のコマンドに直接パイプすることは問題外です。そのsyslog
ため、可能性はありません。)
更新:バウンティを追加しました。受け入れ答えはなりません伴うlogger
単純な理由logger
ではない私が尋ねたもの。元の質問が述べているように、私はFIFOを使用する上での問題点のみを探しています。