Что я пытаюсь сделать: журнал ротации доступа к nginx и журнала ошибок с помощью multilog
Мой подход: регистрировать доступ и ошибку nginx в канал, чтобы у меня был другой процесс, который запускает multilog, который читает из этого канала, и позволяет multilog выполнять ротацию журнала
nginx.conf
access_log /var/log/nginx/access/pipe;
error_log /var/log/nginx/access/pipe;
Я удостоверился, что создал трубку и даю достаточно разрешения всем, кто может что-либо с ней делать
$ sudo mkfifo /var/log/nginx/access/pipe /var/log/nginx/error/pipe
$ sudo chmod a+rwx /var/log/nginx/access/pipe /var/log/nginx/error/pipe
Однако, когда я запускаю nginx, он зависает, как если бы он ждал stdin или что-то в этом роде. Я могу что-то здесь упустить.
Я пробовал простое эхо в трубу
$ echo a > /var/log/nginx/access/pipe
и он также зависает, как будто ожидает ввода дополнительных данных. Mayb
Я думаю, что multilog нужно прослушивать каналы, прежде чем запускать Nginx.
этот проект решает это, правильно связывая svlogd и nginx семантика, у него есть программа chargen, имитирующая поведение nginx, стресс-тест и пример интеграции runit / runv / svlogd
Слоган проекта: ротация логов nginx с помощью daemontools / runit (multilog / svlogd соответственно)