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

如何在终端中显示Django自定义中间件的日志输出

问题解决步骤
  • 首先检查Django日志级别配置
    默认Django的日志配置仅输出WARNING及以上级别的日志,你代码中用的是LOG.info属于INFO级别,默认不会输出到终端。需要在settings.py中添加如下日志配置:
LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'console': {
            'class': 'logging.StreamHandler',
        },
    },
    'root': {
        'handlers': ['console'],
        'level': 'INFO',
    },
    # 也可以单独配置你中间件所在模块的日志级别,假设你的中间件放在myapp/middleware.py下
    'loggers': {
        'myapp.middleware': {
            'handlers': ['console'],
            'level': 'INFO',
            'propagate': False,
        },
    },
}
  • 验证中间件是否被正常加载执行
    可以先在中间件的__init__方法中添加一行LOG.warning("中间件加载成功"),重启Django服务器,如果终端能看到这条日志,说明中间件加载正常,否则检查MIDDLEWARE列表中填写的中间件路径是否完全正确。
  • 检查请求是否符合中间件执行逻辑
    你测试用的admin后台请求默认不会携带X-Token请求头,会走到else分支,先确认else分支的代码没有提前崩溃:你当前代码中requests.HTTPError()仅实例化了异常对象,没有添加raise关键字抛出异常,代码会继续向下执行,不会中断。可以先将测试请求手动加上X-Token头,或者把日志临时改成LOG.warning级别,排除级别过滤的影响。
  • 检查前置中间件是否提前拦截请求
    Django的中间件是按MIDDLEWARE列表从上到下的顺序执行的,如果你的自定义中间件位置太靠后,前面的中间件(比如AuthenticationMiddleware、CsrfViewMiddleware等)提前返回了响应或者抛出了异常,就会导致你的中间件逻辑没有被执行。建议把验证类中间件放在MIDDLEWARE列表的靠前位置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 20:06:04