Django文件日志器问题:django.db.backends日志同时输出至控制台求解
Django日志配置:让django.db.backends仅输出到文件而非控制台
问题出在日志的传播机制上——Django日志默认会让子日志器的日志传递给父级(这里是root日志器)。你的django.db.backends日志器没关闭传播,所以它的日志会同时走自己的file处理器和root的console处理器,导致SQL命令两边都输出。
只需要给django.db.backends日志器添加propagate: False配置即可解决,修改后的完整配置如下:
LOGGING = { "version": 1, "disable_existing_loggers": False, "formatters": { "verbose": { "format": "%(levelname)s %(asctime)s %(module)s " "%(process)d %(thread)d %(message)s" } }, "handlers": { "file": { "level": "DEBUG", "class": "logging.handlers.TimedRotatingFileHandler", "filename": "debug/debug.log", 'when': 'W0', # Weekly log starting from Monday 'interval': 1, 'backupCount': 10, }, "console": { "level": "DEBUG", "class": "logging.StreamHandler", "formatter": "verbose", }, }, "root": {"level": "INFO", "handlers": ["console"]}, "loggers": { 'django.db.backends': { 'level': 'DEBUG', 'handlers': ['file'], 'propagate': False, # 关键:阻止日志向上传播到root } }, }
关键说明
propagate: False会关闭当前日志器的传播特性,这样django.db.backends的日志只会被自己配置的file处理器处理,不会再传递给root日志器的console处理器,也就不会在控制台打印SQL命令了。
内容的提问来源于stack exchange,提问作者Vishnu T
相关产品推荐
相关产品推荐

