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

求助:Django配置INFO级别日志但仅收集WARNING及以上内容

Django INFO级别日志未记录的排查方向

1. 确认环境变量LOG_LEVEL的实际生效值

  • 在settings.py中添加print(LOG_LEVEL),启动服务时查看控制台输出,确认是否为'INFO'——排查.env文件加载失败、变量被后续代码覆盖的情况。
  • 检查.env文件是否被正确加载,比如是否通过python-dotenv在settings.py开头执行了load_dotenv()。

2. 给日志处理器显式设置级别

当前配置仅给logger设置了级别,部分handler可能存在默认过滤逻辑。给rotatingFile handler添加级别配置,确保它会放行INFO及以上日志:

'handlers': {
   'rotatingFile': {
        'class': 'logging.handlers.RotatingFileHandler',
        'formatter': 'verbose',
        'maxBytes': LOG_MAX_SIZE,
        'backupCount': LOG_NUMBER_OF_FILES,
        'filename': LOG_LOCATION,
        'level': LOG_LEVEL,  # 新增此行
    }
},

3. 排查logger的传播与覆盖问题

  • 你配置的多个logger(如django、main)都设置了propagate: False,需确认代码中实际使用的logger名称是否与配置完全匹配。比如代码中用logging.getLogger('django.request'),而你仅配置了django父logger,可临时将propagate改为True,测试是否能捕获到INFO日志,排查是否存在未配置的子logger。
  • 检查第三方应用、自定义中间件是否在ready()方法或其他逻辑中修改了logging配置,覆盖了你的级别设置。

4. 验证INFO日志的生成逻辑

  • 在视图或核心代码中手动添加测试日志:logging.getLogger(__name__).info('Test INFO log'),触发后查看日志文件,确认是配置问题还是代码未生成INFO级日志。
  • 注意Django默认请求日志的规则:当DEBUG=True时,django.request的日志级别为DEBUG,不会生成INFO级的请求日志;只有DEBUG=False时,才会记录200响应这类INFO级日志。如果当前应用处于DEBUG模式,这可能是你看不到请求INFO日志的核心原因。

5. 检查日志文件的基础问题

  • 确认LOG_LOCATION指向的目录存在,且Django进程有写入权限(虽然WARNING能写入时权限问题概率低,但仍需排除)。
  • 检查日志文件是否已触发旋转,确认你查看的是最新的日志文件而非旧备份文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 04:55:26