Django logging - how does propagate work?

I have a following logging config:

"root": {
    "level": "ERROR",
    "handlers": ["console", "server_file"],
},
"handlers": {
    "celery_file": {
        "class": "logging.handlers.RotatingFileHandler",
        "level": "DEBUG",
        "filename": os.path.join(ROOT_LOGS_DIR, "celery", "celery.log"),
        "formatter": "standard",
        "maxBytes": 1024 * 1024 * 50,  # 50 MB
        "backupCount": 30,
    },
"loggers": {
    # '': {'handlers': ["root"], "level": "DEBUG", "propagate": True, },
    'django': {'handlers': ['django'], 'level': 'DEBUG', 'propagate': False, },        
    "celery": {
        "handlers": ["celery_file"],
        "level": "INFO",
        "propagate": True|False,
    },

In application,

log = logging.getLogger("celery.inbound_outbound_jobs")
print(log.handlers) # output: [] No handlers
log.error("test")

My question is :

  1. when celery logger propagate =True, will this log be handled by celery logger? Also does it propagate to root logger?
  2. when propagate=False, will log be still handled by celery logger?
Вернуться на верх