L'image docker officielle de nginx ( Dockerfile ) utilise l'astuce suivante pour transmettre ses journaux à stdout et stderr afin qu'ils soient capturés par le collecteur de journaux de Docker et consultables à l'aide de la commande docker logs <container-name>
:
# forward request and error logs to docker log collector
RUN ln -sf /dev/stdout /var/log/nginx/access.log
RUN ln -sf /dev/stderr /var/log/nginx/error.log
Je veux faire la même chose, mais j'ai supervisord comme PID 1 dans mon conteneur et il supervise le processus nginx et capture stdout et stderr et le met dans son propre fichier journal. Par conséquent, les journaux n'atteignent pas le collecteur de journaux de docker.
Voici le bloc correspondant dans mon supervisord.conf
[program:nginx]
command=/usr/sbin/nginx -g "daemon off;"
priority=990
; NOTE: We do not want to redirect stdout and stderr of a nginx process to a logfile because we want docker log collector to get them.
stdout_logfile= NOT SURE WHAT TO PUT HERE?
stderr_logfile= NOT SURE WHAT TO PUT HERE?
username=www-data
autorestart=true
Les documents du superviseur sont excellents ( http://supervisord.org/configuration.html ) mais pour stdout_logfile
ils ne me donnent pas la réponse dont j'ai besoin - à savoir, comment puis-je configurer supervisord pour ne pas intercepter les stdout / stderr d'un processus (ou pour capturer dans un fichier journal mais aussi pour transférer vers les stdout / stderr normaux).
Ce que j'ai déjà essayé :
-
stdout_logfile=NONE
- Ne pas obtenir de logs ni stdout ni dans un fichier -
stdout_logfile=/var/log/supervisor/%(program_name)s.log
- Obtenir les journaux dans un fichier mais pas dans la sortie standard. - Ne pas définir
stdout_logfile
- Récupère les journaux dans un fichier nommé au hasard mais pas dans la sortie standard. -
stdout_logfile=/dev/stdout
- Supervisord donne une erreur :CRIT exception Python non capturée, fermeture du canal (stdout)> ( :[Errno 29] Recherche illégale [/usr/lib/python2.7/dist-packages/supervisor/supervisord.py|runforever|233] [/usr/lib/python2.7/dist-packages/supervisor/dispatchers.py|handle_read_event|231]. [/usr/lib/python2.7/dist-packages/supervisor/dispatchers.py|record_output|165] [/usr/lib/python2.7/dist-packages/supervisor/dispatchers.py|_log|141] [/usr/lib/python2.7/dist-packages/supervisor/loggers.py|info|273] [/usr/lib/python2. 7/dist-packages/supervisor/loggers.py|log|291] [/usr/lib/python2.7/dist-packages/supervisor/loggers.py|emit|186] [/usr/lib/python2.7/dist-packages/supervisor/loggers.py|doRollover|195])