我有一个问题,我不能在stackoverflow或web上找到任何帮助。我有一个程序(芹菜分布式任务队列),我有多个实例(工人),每个有一个日志文件(celery_worker1.log,celery_worker2.log)。记录到非阻塞命名管道?
重要的错误存储在数据库中,但我喜欢在运行新操作时不时确定这些日志,以确保一切正常(日志级别较低)。
我的问题:这些日志占用大量的磁盘空间。 我想做什么:只有当我需要它时,才能“看”日志(tail -f),而不需要占用大量空间。
我的想法到现在为止:
- outputing日志到标准输出,而不是一个文件:不可能在这里,因为我有很多工人outputing到不同的文件,但我想尾部一次全部(尾 - f celery_worker * .log)
- 使用logrotate:对我来说这是一个“OK”解决方案。我不希望这是一个日常任务,但宁愿不要把这个分钟的crontab,而更多的是,服务器不是我的,所以这将意味着使用命名管道在管理系统端
- 一些工作:它看起来一见钟情,但我不知道那个命名管道(linux FIFO)在哪里阻塞。因此,当我不同时尾巴所有管道时,或者当我刚刚退出尾巴时,记录器的写入操作将被阻止。
有没有办法建立一个非阻塞的命名管道,当只有抛出时stdout抛出,并抛出/ dev/null时,不是?
或者这种类型的管道是否存在技术难题?如果有,它们是什么?
谢谢你的回答!
可能重复的[Linux非阻塞FIFO(按需日志记录)](http://stackoverflow.com/questions/7360473/linux-non-blocking-fifo-on-demand-logging) – 2015-01-29 21:26:32