Django芹菜任务日志

2024-06-01 04:03:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我在一个我正在做的Django项目中设置了芹菜。我想将芹菜任务的日志与其余芹菜日志(芹菜、芹菜等)分开。

基于芹菜文档(http://docs.celeryproject.org/en/latest/userguide/tasks.html#logging),我似乎应该能够为“celeri.task”定义一个Django记录器,它应该可以完成这项工作。但是,当我这样做时,日志中没有显示任何内容。如果我创建一个通用的“芹菜”记录器,所有的东西都会出现,这意味着这可能与记录器的名称有关。

我错过了什么?有没有办法让这个工作,还是所有的芹菜原木必须一起去?

就其价值而言,我将celerid_HIJACK_ROOT_LOGGER设置为False。

我在settings.py中的日志设置:

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'filters': {
        'require_debug_false': {
            '()': 'django.utils.log.RequireDebugFalse'
        }
    },
    'formatters': {
        'standard': {
            'format': '%(asctime)s %(levelname)s [%(name)s: %(lineno)s] -- %(message)s',
            'datefmt': '%m-%d-%Y %H:%M:%S'
        },
    },
    'handlers': {
        'logfile': {
            'level': 'INFO',
            'filters': None,
            'class': 'logging.handlers.RotatingFileHandler',
            'filename': '/vagrant/logs/logfile.log',
            'maxBytes': 1024*1024*5,
            'backupCount': 3,
            'formatter': 'standard'
        },
        'debug_logfile': {
            'level': 'DEBUG',
            'filters': None,
            'class': 'logging.handlers.RotatingFileHandler',
            'filename': '/vagrant/logs/debug_logfile.log',
            'maxBytes': 1024*1024*5,
            'backupCount': 5,
            'formatter': 'standard'
        },
        'default_logger': {
            'level': 'WARNING',
            'filters': None,
            'class': 'logging.handlers.RotatingFileHandler',
            'filename': '/vagrant/logs/default.log',
            'maxBytes': 1024*1024*5,
            'backupCount': 2,
            'formatter': 'standard'
        },
        'celery_logger': {
            'level': 'DEBUG',
            'filters': None,
            'class': 'logging.handlers.RotatingFileHandler',
            'filename': '/vagrant/logs/celery.log',
            'maxBytes': 1024*1024*5,
            'backupCount': 2,
            'formatter': 'standard'
        },
        'celery_task_logger': {
            'level': 'DEBUG',
            'filters': None,
            'class': 'logging.handlers.RotatingFileHandler',
            'filename': '/vagrant/logs/celery_tasks.log',
            'maxBytes': 1024*1024*5,
            'backupCount': 2,
            'formatter': 'standard'
        },
    },
    'loggers': {
        '': {
            'handlers': ['default_logger'],
            'level': 'WARNING',
            'propagate': True,
        },
        'django': {
            'handlers': ['logfile'],
            'level': 'INFO',
            'propagate': True,
        },
        'feedmanager': {
            'handlers': ['logfile', 'debug_logfile'],
            'level': 'DEBUG',
            'propagate': True,
        },
        'recipemanager': {
            'handlers': ['logfile', 'debug_logfile'],
            'level': 'DEBUG',
            'propagate': True,
        },
        'menumanager': {
            'handlers': ['logfile', 'debug_logfile'],
            'level': 'DEBUG',
            'propagate': True,
        },
        'celery.task': {
            'handlers': ['celery_task_logger'],
            'level': 'DEBUG',
            'propagate': True,
        },
        'celery': {
            'handlers': ['celery_logger'],
            'level': 'DEBUG',
            'propagate': True,
        },
    }
}

Tags: debugnonelogtruelogginghandlersloggerlevel
1条回答
网友
1楼 · 发布于 2024-06-01 04:03:35

我猜你的任务是

from celery.utils.log import get_task_logger
logger = get_task_logger(__name__)

如果您这样做,那么您的记录器名称将是模块名称,因此如果您的任务位于名为MyApp的应用程序中的tasks.py文件中,那么您的记录器将命名为“MyApp.tasks”,并且您必须在设置中创建记录器“MyApp.tasks”。

如果所有的任务都在同一个日志记录器上,您可以用不同的字符串来代替名称。ie:'芹菜.任务'

哦,确保你的员工日志级别符合你的要求

相关问题 更多 >