Сельдерей регистрируется в Papertrail

Я создаю приложение с помощью 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.


person Darwin Tech    schedule 26.10.2015    source источник


Ответы (1)


Если я правильно прочитал это, секрет в том, вызовите функцию redirect_stdouts_to_logger, чтобы отправить стандартный вывод на ваш экземпляр SysLogHandler. Сельдерей документы содержат больше.

person Troy Davis    schedule 15.11.2015