我有一个必须记录每个事务的应用程序。每条日志消息都会被刷新,因为我们需要记录导致崩溃的事件。我和我的同事很好奇如何在确保日志消息离开进程的同时实现缓冲的性能效果。
我们想到的是:
- 创建应用程序可以写入的FIFO,并且
- 通过重定向该FIFO的内容到常规文件
cat。
也就是说,通常是:
app --logfile logfile.txt
就是现在:
mkfifo logfifo
cat logfifo &> logfile.txt &
app --logfile logfifo
这种方法有什么陷阱吗?在我们测试它时它可以工作,但是我们要绝对确保即使原始应用程序崩溃了,消息也能找到到达重定向文件的方式。
(我们没有应用程序的源代码,因此,编程解决方案是不可能的。此外,应用程序不会写入stdout,因此直接用管道传输到其他命令syslog是不可能的。因此,这是不可能的)
更新:我添加了赏金。接受的答案将不会涉及logger的原因很简单,logger是不是我所问。正如最初的问题所述,我只在使用FIFO时才发现问题。