Каждый работник представляет собой изолированный процесс со своей собственной памятью, поэтому вы не можете использовать один и тот же регистратор для разных работников.
Ваш код работает внутри этих работников, потому что основной процесс заботится только об управлении работниками.
Мастер-процесс - это простой цикл, который прослушивает различные сигналы процесса и реагирует соответствующим образом.Он управляет списком работающих работников, прослушивая такие сигналы, как TTIN, TTOU и CHLD.TTIN и TTOU говорят мастеру увеличить или уменьшить количество работающих работников.
В самом Gunicorn есть два основных режима работы
Так что это отличается от многопоточности, это многопроцессорная обработка.
Однако, начиная с Gunicorn 19, опция потоков может использоваться для обработки запросов в нескольких потоках.Использование потоков предполагает использование gthread worker.
С учетом этого код регистрации будет записан один раз и будет вызываться несколько раз при каждом создании нового работника.Вы можете использовать шаблон Singelton, чтобы гарантировать, что один и тот же экземпляр регистратора используется внутри одного и того же работника.
Для настройки самого регистратора вам просто нужно следовать обычному процессу установки уровней корневого регистратора и различных уровней регистраторов.
basicConfig () не влияет на корневой обработчик, если он уже настроен:
Эта функция ничего не делает, если для корневого регистратора уже настроены обработчики.
Чтобы установить уровень наroot явно делает
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(name)
Тогда уровень можно установить на уровне обработчика или регистратора.
handler = logging.handlers.TimedRotatingFileHandler(log_path, when='midnight', backupCount=30)
handler.setLevel(min_level)
Вы можете проверить этот аналогичный ответ для подробностей, связанных с регистрацией Установить уровни ведения журнала
Дополнительные ресурсы:
http://docs.gunicorn.org/en/stable/design.html