Я обрезал это, и нет ни одного «наилучшего» способа сделать это. Важно иметь в виду несколько вещей.
- Сельдерей работает на производстве как отдельный исполняемый файл. Это кажется очевидным, но это означает, что обмен файлами журналов с другими вещами (например, django) не будет работать хорошо (см. CELERYD_HIJACK_ROOT_LOGGER), поэтому не делайте этого.
- Сохранение вещей, выполняющихся аналогичным образом как на производстве, так и на вашем развитии среда действительно критичен, то не спутываются при переходе к procution (См CELERY_ALWAYS_EAGER и использовать его)
- сельдерея при запуске из manage.py будет ссылаться на файл
settings.py
для конфигурации, если использовать параметры
Имея это в виду, я хотел бы предложить вам настроить регистрацию в соответствии с вашими потребностями. Сначала убедитесь, что у вас установлен уровень ведения журнала для ваших модулей. См. Мой other post о том, как настроить ведение журнала. Ниже приведена конденсированная версия для удовлетворения ваших потребностей.
LOGGING = {
'version': 1,
'disable_existing_loggers': True,
'formatters': {
'standard': {
'format': "[%(asctime)s] %(levelname)s [%(name)s.%(funcName)s:%(lineno)d] %(message)s",
'datefmt': "%d/%b/%Y %H:%M:%S"
},
},
'handlers': {
'console': {
'level': 'DEBUG',
'()': 'logutils.colorize.ColorizingStreamHandler',
'formatter': 'standard',
'stream': sys.stdout
},
'mail_admins': {
'level': 'ERROR',
'class': 'django.utils.log.AdminEmailHandler',
'include_html': True,
},
},
'loggers': {
'django': {
'handlers': ['mail_admins'],
'propagate': True,
'level': 'ERROR',
},
'mymodule': {
'handlers': ['console', 'mail_admins'],
'propagate': True,
'level': 'DEBUG'
},
}
}
Затем запустите его следующим образом.
./manage.py celeryd --event --beat --settings=dev
Что это такое, он устанавливает два разных обработчика. Первый - это консольный обработчик, который сообщает что-нибудь DEBUG и выше. Второй - обработчик почты, который смотрит только на ОШИБКИ и выше. Далее сообщается о регистраторах. Все регистраторы django. * Получат сообщение любому обработчику уровня ERROR (mail_admins). И любой из наших модулей подталкивает DEBUG и выше к обоим.
Я думаю, что это то, что вам нужно.
Привет - это не совсем то, что мне нужно. То, что я пытался настроить, - это конфигурация, в которой все вызовы DEBUG из журналов, находящихся в белом списке, отправляются на консоль, и все вызовы DEBUG из других модулей (например: библиотеки) игнорируются. Так, например: все вызовы DEBUG от регистраторов с именем «mymodule» (и все вспомогательные модули) будут захвачены, а любые другие вызовы DEBUG будут проигнорированы. Уровни выше DEBUG не будут затронуты. – Taras
О, в этом случае просто измените регистратор с именем '' to 'mymodule'. Я обновил свой ответ – rh0dium