Официальный образ nginx docker (Файл Dockerfile) использует следующий трюк для передачи своих журналов в stdout и stderr, чтобы они были захвачены сборщиком журналов docker и доступны для просмотра с помощью docker logs <container-name>
:
# forward request and error logs to docker log collectorRUN ln -sf /dev/stdout /var/log/nginx/access.logRUN ln -sf /dev/stderr /var/log/nginx/error.log
Я хочу сделать то же самое, однако у меня есть супервайзер как PID 1 в моем контейнере, и он контролирует процесс nginx, захватывает stdout и stderr и помещает их в свой собственный файл журнала. Поэтому журналы не попадают в сборщик журналов docker.
Вот соответствующий блок в моем файле 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-dataautorestart=true
Документы супервайзера великолепны (http://supervisord.org/configuration.html) , но для stdout_logfile
они не дают мне нужного ответа, а именно, как мне настроить supervisord так, чтобы он не перехватывал stdout / stderr процессов (или для записи в файл журнала, но также для пересылки в обычный stdout / stderr).
То, что я уже пробовал:
-
stdout_logfile=NONE
- Не получать никаких журналов ни в stdout, ни в файл -
stdout_logfile=/var/log/supervisor/%(program_name)s.log
- Получать журналы в файл, но не в stdout. - Не определяющий
stdout_logfile
- Получать журналы в файл со случайным именем, но не в stdout. -
stdout_logfile=/dev/stdout
- Супервизор выдает ошибку:>Исключение CRIT uncaptured python, закрытие канала (stdout) (:[Ошибка 29] Незаконный поиск [/usr/lib/python2.7/followers-packages/supervisor/supervisord.py|runforever|233] [/usr/lib/python2.7/followers-packages/supervisor/dispatchers.py|handle_read_event|231] [/usr/lib/python2.7/подписчики-пакеты/супервизор/диспетчеры.py|record_output|165] [/usr/lib/python2.7/подписчики-пакеты/супервизор/диспетчеры.py|_log|141] [/usr/lib/python2.7/последователи-пакеты/супервизор/ - loggers.py/info/273 ] [/usr/lib/python2.7/последователи-пакеты/супервизор/ - loggers.py/log/291 ] [/usr/lib/python2.7/последователи-пакеты/супервизор/ - loggers.py/bought/186 ] [/usr/lib/python2.7/последователи-пакеты/супервизор/ - loggers.py/doRollover/195 ])