Acho que o multilog precisa estar ouvindo os pipes antes de iniciar o Nginx.
O que estou tentando fazer: Log de rotação de acesso nginx e log de erro usando o multilog
Minha abordagem: Log nginx acesso e erro para um pipe, para que eu possa ter outro processo que executa o multilog que lê a partir desse tubo e deixe multilog para fazer a rotação do log
nginx.conf
access_log /var/log/nginx/access/pipe;
error_log /var/log/nginx/access/pipe;
Certifico-me de que criei o canal e concedo permissão suficiente para que qualquer pessoa faça algo com ele
$ 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
No entanto, quando eu inicio o nginx, ele fica pendurado como se estivesse esperando pelo stdin ou algo assim. Eu posso estar perdendo alguma coisa aqui.
Eu tentei eco simples para o tubo
$ echo a > /var/log/nginx/access/pipe
e também trava como se estivesse esperando por mais entrada. Mayb
Acho que o multilog precisa estar ouvindo os pipes antes de iniciar o Nginx.
este projeto resolve-o ligando corretamente o svlogd e nginx semântica, tem um programa chargen que simula o comportamento nginx, um teste de estresse e um exemplo de integração runit / runsv / svlogd
Tagline do projeto: rotação do log nginx com daemontools / runit (multilog / svlogd respectivamente)Tags nginx logging pipe logrotate named-pipes