在我的Celery应用程序中,我在控制台上获得了两种类型的日志,即celery应用程序日志和任务级别日志(内部任务我使用logger.INFO(str)语法进行日志记录)
我想将它们都发送到自定义处理程序(在我的例子中是python-logstash处理程序)
对于django日志我是成功的,通过在settings.py中设置处理程序和记录器,但我对芹菜很无奈
最佳答案
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)
同时使用after_setup_task_logger和after_setup_logger信号解决了问题