如何将芹菜的所有日志发送到自定义处理程序。就我而言python-logstash处理程序

Jam*_*and 5 python logging celery-task django-celery logstash

在我的Celery应用程序中,我在控制台上获得了两种日志类型,即celery应用程序日志和任务级别日志(在任务内部,我使用logger.INFO(str)语法进行记录)

我想将它们都发送到自定义处理程序(在我的情况下为python-logstash处理程序)

对于django日志,我通过在settings.py中设置处理程序和记录器而成功完成了,但是我对芹菜无奈

Jam*_*and 5

def initialize_logstash(logger=None,loglevel=logging.DEBUG, **kwargs):
    # logger = logging.getLogger('celery')
    handler = logstash.TCPLogstashHandler('localhost', 5959,tags=['worker'])
    handler.setLevel(loglevel)
    logger.addHandler(handler)
    # logger.setLevel(logging.DEBUG)
    return logger

from celery.signals import after_setup_task_logger
after_setup_task_logger.connect(initialize_logstash)
from celery.signals import after_setup_logger
after_setup_logger.connect(initialize_logstash)
Run Code Online (Sandbox Code Playgroud)

使用 after_setup_task_logger 和 after_setup_logger 信号解决了问题