django - 将 Celery 任务日志直接保存到单个文件

标签 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,
        },
    }

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

最佳答案

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

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

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

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

关于django - 将 Celery 任务日志直接保存到单个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19579849/

相关文章:

python - 使用 Celery 与 Gevent 进行实时、同步的外部 API 查询

redis - 为什么使用 RabiitMQ 作为代理并使用 redis 作为结果后端?

django - 获取使用 celery cord 创建的所有任务的 task_ids

python - Django,关于 zip 文件响应的问题

django - protonmail.com 邮件服务的 EMAIL_PORT 是什么?

python - Django 中的删除功能不起作用

django - Celery 和 Gunicorn worker 之间的区别?

python - 如何在 Docker 上运行的 Apache Superset 中为电子邮件报告配置 Celery Worker 和 Beat?

python - PySQLPool 和 Celery,正确的使用方法?

html - 内联谷歌样式表链接到一个 div