直接Celery任务记录到单个文件

时间:2013-10-25 01:55:19

标签: django celery

我正在尝试使用settings.py中的日志配置将Celery任务日志重定向到文件中。

这是我的任务:

logger = get_task_logger(__name__)
@celery.task
def add(x, y):
    logger.info('Adding %s + %s' % (x, y))
    return x + y

这是我的日志配置:

'handlers': {
        'myappLog': {
            'level':'DEBUG',
            'class':'logging.handlers.RotatingFileHandler',
            'filename': "myapp.log",
            'maxBytes': 5242880,
            'backupCount': 2,
            'formatter': 'standard',
        },
    },
    'loggers': {
        'myapp.myapp.tasks.add': {
            'handlers': ['myappLog'],
            'level': 'DEBUG',
            'propagate': True,
        },
    }

目前,我在控制台中看到了日志,但没有看到日志文件。日志文件已创建,但它是空的。

1 个答案:

答案 0 :(得分:2)

在记录器中定义从未创建的记录器(myapp.myapp.tasks.add)。您将模块名称指定为getLogger,可能是myapp.myapp.tasks。试试这个:

...
'loggers': {
  'myapp.myapp.tasks': {
...

当您使用get_task_logger时,所有记录器都具有名为celery.task的父级,因此您可以执行此操作以将处理程序应用于所有芹菜任务:

...   
'loggers': {
  'celery.task': {
...