【问题标题】:Celery logs to Papertrail芹菜原木到 Papertrail
【发布时间】:2016-01-26 01:49:45
【问题描述】:

我正在使用 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 配置它的文档。

【问题讨论】:

    标签: python celery papertrail-app


    【解决方案1】:

    如果我正确阅读this,秘诀是调用函数redirect_stdouts_to_logger 将标准输出发送到您的SysLogHandler 实例。 Celery's docs还有更多。

    【讨论】:

      猜你喜欢
      • 2023-03-27
      • 1970-01-01
      • 1970-01-01
      • 2019-09-03
      • 1970-01-01
      • 2012-05-01
      • 2016-04-18
      • 1970-01-01
      • 2021-02-06
      相关资源
      最近更新 更多