I\'m trying to get Celery logging working with Django. I have logging set-up in settings.py to go to console (that works fine as I\'m hosting on
Maybe it will help someone, my problem was to send all celery logs to graylog. Here is solution.
celery.py:
app.config_from_object('django.conf:settings', namespace='CELERY')
# ====== Magic starts
from celery.signals import setup_logging
@setup_logging.connect
def config_loggers(*args, **kwargs):
from logging.config import dictConfig
from django.conf import settings
dictConfig(settings.LOGGING)
# ===== Magic ends
# Load task modules from all registered Django app configs.
app.autodiscover_tasks()
settings.py:
LOGGING = {
'version': 1,
'handlers': {
'graypy': {
'class': 'graypy.GELFTCPHandler',
'host': GRAYLOG_HOST,
'port': GRAYLOG_PORT,
}
},
'loggers': {
'my_project': {
'handlers': ['graypy'],
'level': 'INFO',
},
# ====== Magic starts
'celery': {
'handlers': ['graypy'],
'level': 'INFO',
}
# ===== Magic ends
}
}