В случае, если кто-то ищет ответ -
, вы можете использовать функцию прослушивания события supervisor stdout -
[supervisord]
nodaemon = true << make it true
[program:web]
command = ...
stdout_events_enabled = true. <<< add these lines in your each program config
stderr_events_enabled = true <<< add these lines in your each program config
[eventlistener:stdout]
command = supervisor_stdout
buffer_size = 100
events = PROCESS_LOG
result_handler = supervisor_stdout:event_handler
Это добавит имя программы перед каждой строкой. Но я видел дублирование журналов при использовании этого.
ИЛИ, если вы не хотите использовать прослушиватель событий и не хотите менять свой код, вы можете использовать tail-программу для хвостовых журналов и использовать sed для добавления некоторых. text.
Предположим, ниже приведен ваш конфиг -
[program:app]
command=/bin/bash -c "exec npm run start-generic"
directory=/app01
stdout_logfile=/logs/app.log
stdout_logfile_maxbytes=50
autostart=true
autorestart=true
startretries=0
stopasgroup=true
[program:nginx]
command=/usr/sbin/nginx -g "daemon off;"
logfile = /logs/nginx.log
stdout_logfile_maxbytes=50
Затем добавьте хвостовое задание в config, чтобы написать в стандартный вывод и добавить строку перед ним -
[program:nginx-log-access]
command=/bin/bash -c "tail -f /logs/nginx.log | sed 's/^/[nginx-access] /'"
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
[program:nginx-log-error]
command=/bin/bash -c "tail -f /logs/nginx-error.log | sed 's/^/[nginx-error] /'"
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
[program:app-log]
command=/bin/bash -c "tail -f /logs/app.log | sed 's/^/[app-access] /'"
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0