Я хотел бы создать файлы журнала для каждого работника пула (примерно так же, как они создаются с параметром --logfile). Я знаю, как записать имя основного рабочего с помощью celeryd_init, поэтому я могу настроить файл журнала для основного рабочего на after_setup_logger, но я понятия не имею, где получить идентификатор PoolWorker для настройки журналов для них.
def captureWorkerName(sender, instance, **kwargs):
app.conf.workerName = str(sender)
@after_setup_logger.connect
def setup_loggers(logger, *args, **kwargs):
formatter = logging.Formatter(app.conf.logWorkerFormat)
for handler in logger.handlers:
handler.setFormatter(formatter)
logFileName = rootDir + f"{app.conf.workerName}" + '.log'
Path(rootDir).mkdir(parents=True, exist_ok=True)
fh = GroupWriteRotatingFileHandler(logFileName, when='midnight', backupCount=30)
fh.setFormatter(formatter)
logger.addHandler(fh)
@after_setup_task_logger.connect
def setup_task_logger(logger, *args, **kwargs):
formatter = TaskFormatter(cls.app.conf.logTaskFormat)
for handler in logger.handlers:
handler.setFormatter(formatter)
workerPoolID = ???????
logFileName = rootDir + f"{app.conf.workerName}" + '-' + workerPoolID +'.log'
Path(rootDir).mkdir(parents=True, exist_ok=True)
fh = GroupWriteRotatingFileHandler(logFileName, when='midnight', backupCount=30)
fh.setFormatter(formatter)
logger.addHandler(fh)
```