Вот то, что я сделал, и проходит мой дым тест. Поместите это в верхней части одной из ваших tasks.py
@setup_logging.connect
def project_setup_logging(loglevel, logfile, format, colorize, **kwargs):
import logging.config
from django.conf import settings
logging.config.dictConfigClass(settings.LOGGING).configure()
И мои соответствующие settings.LOGGING
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',
'formatter': 'standard',
'stream': sys.stdout
},
'logfile': {
'level': 'DEBUG',
'class': 'logging.handlers.RotatingFileHandler',
'filename': './django.log',
'maxBytes': 1024*1024*5, # 5 MB
'backupCount': 5,
'formatter': 'standard',
},
'sentry': {
'level': 'WARNING',
'class': 'raven.contrib.django.raven_compat.handlers.SentryHandler',
},
},
'loggers': {
'django': {
'handlers': ['sentry'],
'propagate': True,
'level': 'ERROR',
},
'django.request': {
'handlers': ['sentry'],
'level': 'ERROR',
'propagate': False,
},
'django.db.backends': {
'handlers': ['sentry'],
'level': 'ERROR',
'propagate': False,
},
'raven': {
'level': 'DEBUG',
'handlers': ['console'],
'propagate': False,
},
'sentry.errors': {
'level': 'DEBUG',
'handlers': ['console'],
'propagate': False,
},
'': {
'handlers': ['console', 'sentry', 'logfile'],
'level': 'INFO',
},
}
}
Тогда мой тест это ..
@celery.task()
def dummy_logging_test(**kwargs):
"""Call this as dummy_test.delay()"""
from .models import User
log = dummy_logging_test.get_logger()
if settings.DEBUG:
log.setLevel(logging.DEBUG)
log.debug("Debug DUMMY TEST")
log.info("Info DUMMY TEST")
log.warning("Warning DUMMY TEST")
log.error("Error DUMMY TEST")
log.critical("Critical DUMMY TEST")
try:
User.objects.get(id=9999999)
except Exception as err:
log.exception(err)
raise