Django Celery Logging Best Practice

前端 未结 4 1179
暗喜
暗喜 2020-12-02 09:33

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

4条回答
  •  执念已碎
    2020-12-02 10:16

    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
        }
    }
    

提交回复
热议问题