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

如何在Django的settings.py中输出INFO级别的日志?

Django中settings.py里INFO日志不显示的问题解决

问题根源

你遇到的问题有两个核心原因:

  • 未正确获取logger实例:代码里直接调用logger.info,但未定义logger变量,必须通过logging.getLogger()方法获取日志实例才能使用。
  • LOGGING配置在settings加载阶段未生效:Django会在settings文件完全加载完成后,才根据LOGGING配置初始化日志系统。因此在settings.py中直接执行的日志代码,会使用Python默认的日志配置(默认级别为WARNING,低于该级别的INFO日志不会被输出)。

解决方案

方案1:将日志代码移至Django初始化完成后的位置

不要在settings.py里直接执行日志输出,把测试代码放到以下位置:

  • 视图函数(views.py)
  • 自定义management命令
  • 项目的wsgi.py/asgi.py文件(在Django初始化代码之后)

方案2:手动强制加载LOGGING配置(仅用于测试)

如果一定要在settings.py中输出日志,可以在定义LOGGING后手动调用配置加载方法,同时修正logger的获取逻辑:

修正后的代码示例:

import logging
import logging.config

...

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'console': {
            'class': 'logging.StreamHandler',
        },
    },
    'root': {  # 用'root'代替空字符串,可读性更强,功能完全一致
        'handlers': ['console'],
        'level': 'INFO',
        'propagate': True
    },
}

# 手动加载日志配置,让配置立即生效
logging.config.dictConfig(LOGGING)

...

def do_something():
    # 获取当前模块的logger实例
    logger = logging.getLogger(__name__)
    logger.info('Doing Something')

do_something()

额外说明

  • 生产环境不建议在settings.py中执行日志输出或手动加载配置,遵循Django的初始化流程能避免潜在的配置冲突问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 17:35:17