celery日志不输出的问题处理
问题说明
用Celery也有一阵子了,一直都是很正常的,但是最近做一个新项目时碰到了奇怪的问题,被折腾了一天。
以前的项目里,celery的worker日志我都是直接用module级的logger,也一直没有问题。但这次不知道是不是因为celery的版本问题,worker里的日志死活不显示,但检查数据库里的结果显示任务确定是已经执行了的,在flower里可以看到记录,如果有异常,也可以在flower里看到,但日志文件里就是没有。
放狗搜了半天都是旧的资料,试了好多也不解决问题。
解决方案
最后找到这个帖子《Assistance with Celery Logging》,才解决。
以下以日志输出到stdout为例:
from celery.signals import after_setup_logger
log_format = "xxxx" # 日志格式
@after_setup_logger.connect
def setup_logger(logger, *args, **kwargs):
fh = logging.StreamHandler(sys.stdout)
fh.setLevel(logging.INFO)
fh.setFormatter(logging.Formatter(log_format))
logger.addHandler(fh)
这样日志就可以输出到stdout了。
推送到[go4pro.org]