Как логировать отдельно каждый поток в supervisor
Supervisor удобно использовать для запуска обработчиков очередей. Часто обработчики запускаются в несколько потоков, что указывается в настройках:
[program:worker]
command = php work.php
user = www-data
**process_name=%(program_name)s_%(process_num)02d
numprocs=32**
## Запуск воркера в 32 потока
При этом можно логировать вывод всех потоков в общий файл:
[program:worker]
command = php work.php
user = www-data
process_name=%(program_name)s_%(process_num)02d
numprocs=32
**stdout_logfile = /var/log/worker.log
stderr_logfile = /var/log/worker_error.log**
## Логирование всех потоков в общий файл
Иногда удобнее использовать логирование в отдельный файл для каждого потока:
[program:worker]
command = php work.php
user = www-data
process_name=%(program_name)s_%(process_num)02d
numprocs=32
**stdout_logfile = /var/log/work-%(process_num)02d.log**
stderr_logfile = /var/log/worker_error.log
## Логирование каждого потока в отдельный файл
Тогда файлы с логом каждого потока будут доступны по такому пути:
/var/log/work-00.log /var/log/work-01.log ...
Однако учтите, что в случае большого количества потоков, это дополнительно нагрузит дисковую подсистему, т.к. придется параллельно писать множество файлов.
Сообщить об опечатке
Текст, который будет отправлен нашим редакторам: