我有一个问题,在stackoverflow或网络上都找不到帮助。
我有一个程序(celery分布式任务队列),我有多个实例(workers),每个实例都有一个日志文件(celery_worker1.log,celery_worker2.log)。
重要的错误存储在数据库中,但是我想时不时地查看这些日志,以确保一切正常(日志级别较低)。
我的问题:这些日志占用了大量磁盘空间。 我想做的是:只有在需要时才能“观看”日志(tail -f),而不会占用大量空间。
我的想法到目前为止:
- 将日志输出到标准输出,而不是输出到文件:在这里不可能,因为我有许多工作人员将输出到不同的文件,但我想同时尾随它们所有(tail -f celery_worker * .log) - 使用logrotate:对我来说这是一个“可以”的解决方案。我不想让这成为日常任务,但也不想为此设置一个分钟crontab,而且更多的是,服务器不是我的,所以这意味着管理员系统需要进行一些工作 - 使用命名管道:乍一看好像很好,但我不知道命名管道(Linux FIFO)会阻塞。因此,当我不同时尾随所有管道时,或者当我只是退出我的尾随时,记录器的写操作被阻止。
是否有一种非阻塞命名管道的方法,它只是在尾随时抛出stdout,并在不是的情况下抛出/dev/null?
或者这种类型的管道存在技术困难吗?如果有,那是什么?
感谢您的答案!
我有一个程序(celery分布式任务队列),我有多个实例(workers),每个实例都有一个日志文件(celery_worker1.log,celery_worker2.log)。
重要的错误存储在数据库中,但是我想时不时地查看这些日志,以确保一切正常(日志级别较低)。
我的问题:这些日志占用了大量磁盘空间。 我想做的是:只有在需要时才能“观看”日志(tail -f),而不会占用大量空间。
我的想法到目前为止:
- 将日志输出到标准输出,而不是输出到文件:在这里不可能,因为我有许多工作人员将输出到不同的文件,但我想同时尾随它们所有(tail -f celery_worker * .log) - 使用logrotate:对我来说这是一个“可以”的解决方案。我不想让这成为日常任务,但也不想为此设置一个分钟crontab,而且更多的是,服务器不是我的,所以这意味着管理员系统需要进行一些工作 - 使用命名管道:乍一看好像很好,但我不知道命名管道(Linux FIFO)会阻塞。因此,当我不同时尾随所有管道时,或者当我只是退出我的尾随时,记录器的写操作被阻止。
是否有一种非阻塞命名管道的方法,它只是在尾随时抛出stdout,并在不是的情况下抛出/dev/null?
或者这种类型的管道存在技术困难吗?如果有,那是什么?
感谢您的答案!