You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:Django启动异常无法将完整栈追踪写入日志文件

解决方案

一、调整日志配置以捕获启动阶段异常

当前日志未记录完整栈追踪,是因为异常触发在Django启动流程(检查迁移环节)中,涉及的日志器未被正确配置。修改LOGGING配置如下:

LOGGING = {
    "version": 1,
    "disable_existing_loggers": False,
    "formatters": {
        "verbose": {
            "format": "{levelname} {asctime} {module} {message}",
            "style": "{",
        },
    },
    "handlers": {
        "console": {
            "class": "logging.StreamHandler",
        },
        "file": {
            "class": "logging.FileHandler",
            "filename": str(BASE_DIR) + "/logs/app.log",
            "level": "DEBUG",
            "formatter": "verbose",
        },
    },
    "loggers": {
        "django": {
            "handlers": ["console", "file"],
            "level": "DEBUG",
            "propagate": True,
        },
        "django.db.backends": {
            "handlers": ["file"],
            "level": "DEBUG",
            "propagate": False,
        },
        "django.core.management": {
            "handlers": ["file"],
            "level": "DEBUG",
            "propagate": True,
        },
        "django.utils.autoreload": {
            "level": "DEBUG",
            "handlers": ["file"],
            "propagate": True,
        },
    }
}

关键调整说明:

  • 新增verbose格式化器,记录日志级别、时间、模块等完整信息,便于排查
  • 给django.db.backends和django.core.management单独配置日志处理器,覆盖数据库操作与命令执行环节的日志
  • 调整django.utils.autoreload的日志级别为DEBUG——异常发生在autoreload线程中,原CRITICAL级别会忽略大部分错误日志

二、中间件无法捕获异常的原因

该异常发生在Django启动的预请求阶段(runserver执行迁移检查时),此时请求中间件尚未初始化,所以无法捕获这类启动流程中的异常。中间件仅能处理请求进入后的生命周期内异常。

三、解决根源权限问题(可选)

既然已明确是PostgreSQL用户缺少django_migrations表权限,直接在数据库中执行授权命令即可:

-- 授予django_migrations表的读写权限
GRANT SELECT, INSERT, UPDATE, DELETE ON django_migrations TO your_database_username;
-- 若需执行完整迁移,可直接授予数据库全权限
GRANT ALL PRIVILEGES ON DATABASE your_database_name TO your_database_username;

内容的提问来源于stack exchange,提问作者kta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 01:07:02