这是我的情景。我的Django项目中有一些这样的函数:
import logging
logger = logging.getLogger('farm')
def _move_horse(horse_id, attachment=None):
if attachment:
logger.info(...)
#other_stuff
else:
logger.info(...)
other_func() # contains more logging
def move_horse_to_field(horse_id):
_move_horse(horse_id)
def move_horse_to_field_w_attachment(horse_id, attachment):
_move_horse(horse_id, attachment)
然后我想把这个作为后台任务:
@shared_task(bind=True)
def move_horse_to_field(self, horse_id):
_move_horse(horse_id)
但是,当从后台任务调用时,如何使被调用函数中的日志记录都正常工作?
答案 0 :(得分:0)
经过一段时间的工具并尝试不同的东西后,它似乎就像设置此选项一样简单:
CELERYD_HIJACK_ROOT_LOGGER = False
一旦我这样做,芹菜工人似乎尊重我现有的所有日志设置。他们写入Django应用程序所做的同一个文件,他们甚至在我记录错误级别消息时发送电子邮件(我有一个日志设置)在我的情况下,这正是我想要的。
我似乎根本没有打扰get_task_logger(名称)。