Tôi có một ứng dụng phải đăng nhập từng giao dịch. Mọi thông điệp tường trình đều bị xóa vì chúng ta cần có một bản ghi về những gì đã xảy ra dẫn đến một vụ tai nạn. Các đồng nghiệp của tôi và tôi đã tò mò về cách đạt được hiệu ứng hiệu năng của bộ đệm trong khi đảm bảo rằng thông điệp tường trình đã rời khỏi quy trình.
Những gì chúng tôi đã đưa ra là:
- tạo một FIFO mà ứng dụng có thể ghi vào và
- chuyển hướng nội dung của FIFO đó sang một tệp thông thường
cat
.
Đó là, những gì đã được thông thường:
app --logfile logfile.txt
Hiện tại là:
mkfifo logfifo
cat logfifo &> logfile.txt &
app --logfile logfifo
Có bất kỳ vấn đề nào về phương pháp này không? Nó hoạt động khi chúng tôi kiểm tra nó, nhưng chúng tôi muốn chắc chắn rằng các tin nhắn sẽ tìm đường đến tệp chuyển hướng ngay cả khi ứng dụng gốc gặp sự cố.
(Chúng tôi không có mã nguồn cho các ứng dụng, do đó lập trình các giải pháp ra khỏi câu hỏi này. Ngoài ra, các ứng dụng sẽ không ghi vào stdout
, vì vậy đường ống trực tiếp đến một lệnh khác nhau là ra câu hỏi. Vì vậy, syslog
không phải là một khả năng .)
Cập nhật: Tôi đã thêm một tiền thưởng. Câu trả lời được chấp nhận sẽ không liên quan logger
vì lý do đơn giản đó không phảilogger
là điều tôi đã hỏi. Như câu hỏi ban đầu, tôi chỉ tìm kiếm gotchas trong việc sử dụng một bộ xếp hình.