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

Django配置日志后无法记录Warning以下级别日志的问题

Django DEBUG级别日志不输出问题排查与解决

问题描述

在Django框架中配置日志时,已将handler和logger的日志级别均设置为DEBUG,但仅能输出Warning及以上级别的日志,INFO和DEBUG级别的日志未被记录。代码中打印的logger.level为10(对应DEBUG级别),但日志仍无输出。

核心原因

最可能的问题是logger实例未正确关联到settings.py中配置的app logger。如果logger的名称与配置中的app不匹配(包括子模块继承场景),配置的日志规则就不会生效。

解决方案

1. 正确初始化logger

在app/views/test.py中,使用以下方式获取logger:

import logging

# 方式1:用模块名自动关联到app logger(推荐)
logger = logging.getLogger(__name__)

# 方式2:明确指定app logger名称
# logger = logging.getLogger('app')

__name__会自动解析为app.views.test,作为app logger的子logger,会继承父logger的级别、handler等配置。如果之前用其他名称(比如空字符串logging.getLogger())创建logger,就无法匹配到settings里的配置规则。

2. 验证logger关联状态

在test函数中添加调试代码,确认logger的配置关联情况:

print("Logger name:", logger.name)
print("Logger handlers:", [h.__class__.__name__ for h in logger.handlers])
print("Effective level:", logger.getEffectiveLevel())
  • 若logger.name不是app或其子模块名,说明初始化错误
  • 若handlers列表为空,说明logger未关联到配置的console handler
  • getEffectiveLevel()应返回10(DEBUG),否则说明级别配置未生效

3. 检查LOGGING配置细节

确保settings.py中的LOGGING配置无遗漏:

  • 确认'disable_existing_loggers'设为False,避免覆盖已存在的logger
  • 确认app logger的'level'为'DEBUG',且'handlers'包含'console'

验证修改

修改后重新运行代码,INFO和DEBUG级别的日志应正常输出:

INFO 2023-12-05 07:06:46,933 test This is an informational message.
DEBUG 2023-12-05 07:06:46,933 test This is a debug message.
WARNING 2023-12-05 07:06:46,934 test This is a warning message.
ERROR 2023-12-05 07:06:46,935 test This is an error message.
CRITICAL 2023-12-05 07:06:46,935 test This is a critical message.

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 00:27:33