我有一個問題,我不能在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