Задание журнала Django Celery

У меня есть установка Celery в проекте Django, над которым я работаю. Я хотел бы отделить лесозаготовки для задач сельдерея и остатков сельдерейных бревен (сельдерея, сельдерея и т. Д.).

Основываясь на документации по сельдерею ( http://docs.celeryproject.org/en/latest/userguide/tasks.html#logging ), мне кажется, что я просто могу определить регистратор Django для «celery.task», который должен делать это. Однако, когда я это делаю, в журналах ничего не отображается. Все появляется, если я создаю общий «сельдерейский» регистратор, подразумевая, что это может быть связано с именем регистратора.

Что мне здесь не хватает? Есть ли способ сделать эту работу, или все журналы сельдерея идут вместе?

Для чего это стоит, я установил CELERYD_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, }, } } 

    я угадываю ваши задачи, делая это

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

    если вы это сделаете, то имя вашего логгера будет именем модуля, поэтому, если ваша задача находится в файле tasks.py в приложении MyApp, ваш регистратор будет иметь имя «MyApp.tasks», и вам нужно будет создать регистратор, MyApp.tasks "в ваших настройках.

    Вы можете просто поместить другую строку вместо __name__ для всех задач для входа в тот же журнал, если у вас их все место. т.е.: 'celery.task'

    oh и убедитесь, что ваш рабочий лог-уровень – это то, что вы хотите, чтобы оно было