Eu tenho php-fpm em um contêiner docker e Dockerfile
edito o arquivo de configuração fpm ( /etc/php5/fpm/pool.d/www.conf
) para configurar logs de acesso /var/log/fpm-access.log
e logs de erro /var/log/fpm-php.www.log
:
# Do some php-fpm config
# Redirect worker stdout and stderr into main error log
# Activate the fpm access log
# Enable display errors
# Enable the error log
RUN sed -i '/^;catch_workers_output/ccatch_workers_output = yes' /etc/php5/fpm/pool.d/www.conf && \
sed -i '/^;access.log/caccess.log = /var/log/fpm-access.log' /etc/php5/fpm/pool.d/www.conf && \
sed -i '/^;php_flag\[display_errors\]/cphp_flag[display_errors] = off' /etc/php5/fpm/pool.d/www.conf && \
sed -i '/^;php_admin_value\[error_log\]/cphp_admin_value[error_log] = /var/log/fpm-php.www.log' /etc/php5/fpm/pool.d/www.conf && \
sed -i '/^;php_admin_flag\[log_errors\]/cphp_admin_flag[log_errors] = on' /etc/php5/fpm/pool.d/www.conf
Isso funciona bem - posso colocar um shell no contêiner para ver os logs. Mas... não é a melhor prática.
O problema é quando tento usar o coletor de log do docker - preciso do php-fpm para logar no stdout ou stderr para que o docker possa capturá-los e fornecê-los ao docker logs
comando.
Tentei fazer isso no Dockerfile
(que é uma ideia que copiei da imagem oficial do nginx docker ):
# Redirect fpm logs to stdout and stderr so they are forwarded to the docker log collector
RUN ln -sf /dev/stdout /var/log/fpm-access.log && \
ln -sf /dev/stderr /var/log/fpm-php.www.log
Isso não está funcionando - nenhum log de acesso é visto docker logs
- estou tentando descobrir por quê? Alguém mais que usa fpm no docker conseguiu fazer o log funcionar no coletor de log do docker?
Ok, o jeito é enviar o erro e os logs de acesso para o seguinte endereço:
Em
php5-fpm.log
adicionar:NOTA:
access.log
está correto, encontre nesta página https://www.php.net/manual/en/install.fpm.configuration.phpObserve que a configuração fpm incorporada para a versão mais recente da imagem oficial do PHP fpm docker grava nos fluxos padrão:
Os logs do PHP-FPM só aparecerão no STDERR - então você pode fazer um link simbólico
fpm.log
para/dev/stderr
se quiser.