Existe uma maneira de fazer com que o processo mestre faça logon no STDOUT STDERR em vez de em um arquivo?
Parece que você só pode passar um caminho de arquivo para a diretiva access_log:
access_log /var/log/nginx/access.log
E o mesmo vale para error_log:
error_log /var/log/nginx/error.log
Entendo que isso simplesmente pode não ser um recurso do nginx, eu estaria interessado em uma solução concisa que usa tail, por exemplo. É preferível, porém, que seja proveniente do processo mestre, porque estou executando o nginx em primeiro plano.
Respostas:
Edit: parece que o nginx agora suporta
error_log stderr;
como mencionado na resposta de Anon .Você pode enviar os logs para
/dev/stdout
. Emnginx.conf
:edit: Pode ser necessário executar ln -sf / proc / self / fd / dev / se estiver executando certos contêineres de docker, use
/dev/fd/1
ou/dev/fd/2
fonte
ENXIO
quando stdout está aberto em um soquete e não em um arquivo. Há um tíquete de kernel upstream indicando que isso é intencional e por intenção: bugzilla.kernel.org/show_bug.cgi?id=1360 - portanto, embora essa resposta seja suficiente em alguns casos, ela não cobre totalmente o possível falhas.stderr
Se a pergunta estiver relacionada ao docker ... as imagens oficiais do nginx docker fazem isso fazendo links para stdout / stderr
RUN ln -sf /dev/stdout /var/log/nginx/access.log && ln -sf /dev/stderr /var/log/nginx/error.log
REF: https://microbadger.com/images/nginx
fonte
FROM nginx:alpine RUN ln -sf /dev/stdout /var/log/nginx/access.log \ && ln -sf /dev/stderr /var/log/nginx/error.log CMD ["nginx-debug", "-g", "daemon off;"]
http://nginx.org/en/docs/ngx_core_module.html#error_log
Não use:
/dev/stderr
isso interromperá sua configuração se você usar o systemd-nspawn.fonte
Ao executar o Nginx em um contêiner do Docker, lembre-se de que um volume montado sobre o diretório de log anula o propósito de criar um link suave entre os arquivos de log e o stdout / stderr no seu Dockerfile, conforme descrito na resposta do @Boeboe .
Nesse caso, você pode criar o softlink no seu ponto de entrada (executado após a montagem dos volumes) ou não usar um volume (por exemplo, quando os logs já são coletados por um sistema de registro central).
fonte
Na imagem do docker do PHP-FPM, eu vejo essa abordagem:
fonte
Para uma finalidade de depuração:
Para um propósito clássico
Exigir
Sob o suporte do servidor no arquivo de configuração
fonte