Django日志配置报错:ValueError: 无法配置gunicorn处理器
问题修复:Django日志配置报错
ValueError: Unable to configure handler 'gunicorn' 报错根源是gunicorn日志处理器引用了未定义的格式化器verbose——你的formatters字典里只定义了main_formatter,没有名为verbose的格式化规则,导致日志系统无法匹配对应配置。
修复方案(二选一)
方案1:复用已有的main_formatter
修改gunicorn处理器的formatter字段,指向已定义的main_formatter:
LOGGING = { "version": 1, "disable_existing_loggers": False, "formatters": { "main_formatter": { "format": "{asctime}-{levelname}-{module}-{funcName}-{message}", "style": "{", }, }, "handlers": { "warnfile": { "level": "WARNING", "class": "logging.FileHandler", "filename": BASE_DIR / "warning.log", }, "errorfile": { "level": "ERROR", "class": "logging.FileHandler", "filename": BASE_DIR / "error.log", }, "gunicorn": { "level": "DEBUG", "class": "logging.handlers.RotatingFileHandler", "formatter": "main_formatter", # 修改为已存在的格式化器 "filename": BASE_DIR / "gunicorn.log", "maxBytes": 1024 * 1024 * 25, # 修正注释:实际为25MB,原注释写100MB有误 }, }, "loggers": { "": { "handlers": ["warnfile", "errorfile"], "level": "WARNING", "propagate": True, }, "gunicorn.errors": { "level": "DEBUG", "handlers": ["gunicorn"], "propagate": True, }, }, }
方案2:新增verbose格式化器
如果需要为gunicorn日志单独设置格式,在formatters中添加verbose配置:
LOGGING = { "version": 1, "disable_existing_loggers": False, "formatters": { "main_formatter": { "format": "{asctime}-{levelname}-{module}-{funcName}-{message}", "style": "{", }, # 新增verbose格式化器 "verbose": { "format": "{asctime} [{levelname}] {name}: {message} (at {module}.{funcName})", "style": "{", }, }, "handlers": { "warnfile": { "level": "WARNING", "class": "logging.FileHandler", "filename": BASE_DIR / "warning.log", }, "errorfile": { "level": "ERROR", "class": "logging.FileHandler", "filename": BASE_DIR / "error.log", }, "gunicorn": { "level": "DEBUG", "class": "logging.handlers.RotatingFileHandler", "formatter": "verbose", # 保持引用,现在已定义该格式化器 "filename": BASE_DIR / "gunicorn.log", "maxBytes": 1024 * 1024 * 25, # 修正注释:实际为25MB }, }, "loggers": { "": { "handlers": ["warnfile", "errorfile"], "level": "WARNING", "propagate": True, }, "gunicorn.errors": { "level": "DEBUG", "handlers": ["gunicorn"], "propagate": True, }, }, }
额外说明
- 无需手动创建日志文件,logging模块会自动生成(前提是程序拥有目录写入权限)
- 原配置中
maxBytes的注释存在笔误,1024102425对应25MB,已在修复代码中修正
内容的提问来源于stack exchange,提问作者Kaiss B.
相关产品推荐
相关产品推荐

