Я создаю приложение с помощью Flask и Celery и пытаюсь отправить журналы приложений в Papertrail. Это отлично работает для моих обычных (синхронных) журналов приложений. Конфигурация выглядит следующим образом:
import logging
from logging.handlers import SysLogHandler
import socket
class ContextFilter(logging.Filter):
hostname = socket.gethostname()
def filter(self, record):
record.hostname = ContextFilter.hostname
return True
f = ContextFilter()
logger = logging.getLogger()
logger.setLevel(logging.INFO)
logger.addFilter(f)
formatter = logging.Formatter(
"%(asctime)s - %(name)s - %(levelname)s - %(message)s"
)
syslog = SysLogHandler(address=('<myapp>.papertrailapp.com', <port>))
syslog.setFormatter(formatter)
logger.addHandler(syslog)
Я попытался добавить этот регистратор в задачи Celery, но все, что я вижу, это вывод в sdout и ничего в Papertrail. Делает ли Celery что-то, чтобы обойти нормальный процесс ведения журнала?
Я понимаю, что у Celery есть регистратор для конкретных задач, но я не могу найти документацию о том, как это можно настроить с помощью Celery.