Explicación sobre Supervisor y queue sobre error.log de Apache

Al crear un Docker Container, para tener tanto apache2 error.log como a través de los docker logs -f <my_container> , utilizo un contenedor que ejecuta el supervisor como punto de input con estas configuraciones:

 [supervisord] nodaemon = true environment = PLACEHOLDER=true stdout_logfile=/dev/stdout stdout_logfile_maxbytes=0 stderr_logfile=/dev/stderr stderr_logfile_maxbytes=0 [program:apache] command=apache2ctl -DFOREGROUND autostart=true autorestart=true startretries=1 startsecs=1 stderr_logfile=/var/log/apache2/error.log stdout_logfile=/var/log/apache2/access.log user=root killasgroup=true stopasgroup=true [program:apache2-error] command= tail -f /var/log/apache2/error.log autostart = true autorestart = true stdout_logfile=/dev/stdout stdout_logfile_maxbytes=0 stderr_logfile=/dev/stderr stderr_logfile_maxbytes=0 [program:apache2-access] command= tail -f /var/log/apache2/access.log autostart = true autorestart = true stdout_logfile=/dev/stdout stdout_logfile_maxbytes=0 stderr_logfile=/dev/stderr stderr_logfile_maxbytes=0 

esto funciona bien, pero no entiendo por qué esto no funciona si reemploop la session [program:apache] con esto:

 [program:apache] command=apache2ctl -DFOREGROUND autostart=true autorestart=true startretries=1 startsecs=1 user=root killasgroup=true stopasgroup=true 

Es decir: sin establecer explícitamente stderr y stdout logfile, el command docker logs -f <my_container> no funciona, pero dentro del contenedor tail -f /var/logs/apache2/access.log y tail -f /var/logs/apache2/error.log funciona bien.

¿Alguien puede explicarme por qué el supervisor y los docker logs -f <my_container> tienen dos trabajos diferentes debido a estos cambios de configuraciones?

Gracias

El supervisor puede 'ver' la salida estándar de apache2 y escribirla en un file que especifique con stdout_file . Lo que pasa es que apache2 no lo escribe en el logging de acceso a stdout, sino que lo escribe en el file en / var / log / apache2.

Entonces, lo que está viendo en los docker logs -f es el seguimiento que está haciendo el supervisor en el file que proporcionó en stdout_file y el supervisor lo reenvía a su propio stdout como configuró en [supervosord] .

Por lo tanto, cuando elimina la configuration del file de logging apache2 del supervisor, no hay tal reenvío; y apache2 continúa escribiendo en el mismo file que antes.

Entonces, lo que debe hacer es decirle a Apache que escriba su logging de acceso en / dev / stdout en lugar de un file en el disco. Puedes hacer eso en la configuration del server virtual Apache.

Lo mismo para stderr .