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

如何关闭Django输出到控制台的INFO级别日志?

你的配置存在两个核心问题:

  1. root日志的级别设置为INFO,自然会输出所有INFO及以上级别的日志
  2. 如果你调用logging.disable(logging.CRITICAL)的位置在LOGGING配置之前,会被后续加载的日志配置覆盖,完全不生效

下面是对应的解决方案:

方案1:调整现有配置屏蔽INFO日志

仅需把root配置中的level改为WARNING(日志级别优先级:DEBUG < INFO < WARNING < ERROR < CRITICAL),即可过滤掉所有INFO及更低级别的日志:

LOGGING = {
    'version': 1,
    'disable_existing_loggers': True,
    'handlers': {
        'console': {
            'class': 'logging.StreamHandler',
        },
    },
    'root': {
        'handlers': ['console'],
        'level': 'WARNING',
        'propagate': False
    },
}

如果需要彻底关闭所有控制台日志输出,可以直接使用NullHandler丢弃所有日志:

LOGGING = {
    'version': 1,
    'disable_existing_loggers': True,
    'handlers': {
        'null': {
            'class': 'logging.NullHandler',
        },
    },
    'root': {
        'handlers': ['null'],
        'level': 'CRITICAL',
        'propagate': False
    },
}

方案2:正确调用全局禁用方法

如果要使用logging.disable全局关闭日志,必须将调用代码放在LOGGING配置的下方:

# 先写LOGGING配置
LOGGING = {
    # 你的配置内容
}

# 再调用disable方法
import logging
logging.disable(logging.CRITICAL)

常见坑排查

  • 如果你使用Django自带的开发服务器runserver,启动时添加--noreload参数,避免自动重载的子进程加载默认日志配置覆盖你的设置
  • 如果仅部分第三方APP仍输出INFO日志,可以在LOGGING中单独为该包配置日志级别,示例如下:
LOGGING = {
    # 原有配置不变
    'loggers': {
        # 替换为对应第三方包的logger名称
        'some_third_party_app': {
            'level': 'WARNING',
            'propagate': False,
        },
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 06:48:01