Назад | Перейти на главную страницу

nginx - доступ к журналу и ошибка для конвейера и использование multilog для ротации журнала

Что я пытаюсь сделать: журнал ротации доступа к 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 соответственно)