Saya memiliki aplikasi yang harus mencatat setiap transaksi. Setiap pesan log memerah karena kita harus memiliki catatan tentang apa yang terjadi sebelum terjadi kerusakan. Rekan-rekan saya dan saya ingin tahu tentang cara mencapai efek kinerja buffering sambil menjamin bahwa pesan log telah meninggalkan proses.
Yang kami temukan adalah:
- membuat FIFO yang dapat digunakan aplikasi untuk menulis, dan
- mengarahkan isi FIFO itu ke file biasa via
cat
.
Yaitu, apa yang biasanya:
app --logfile logfile.txt
sekarang:
mkfifo logfifo
cat logfifo &> logfile.txt &
app --logfile logfifo
Apakah ada gotcha untuk pendekatan ini? Ini berfungsi ketika kami mengujinya, tetapi kami ingin memastikan bahwa pesan akan menemukan jalannya ke file pengalihan bahkan jika aplikasi asli macet.
(Kami tidak memiliki kode sumber ke aplikasi, jadi solusi pemrograman tidak mungkin. Selain itu, aplikasi tidak akan menulis stdout
, jadi mengirim langsung ke perintah yang berbeda tidak mungkin. Jadi syslog
tidak mungkin .)
Pembaruan: Saya telah menambahkan hadiah. Jawaban yang diterima akan tidak melibatkan logger
untuk alasan sederhana bahwa logger
adalah tidak apa yang saya bertanya tentang. Seperti yang dinyatakan dalam pertanyaan awal, saya hanya mencari gotcha dalam menggunakan FIFO.