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 :
- when celery logger propagate =True, will this log be handled by celery logger? Also does it propagate to root logger?
- when propagate=False, will log be still handled by celery logger?