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

Django 2.2.28日志功能失效排查求助

问题原因及解决方案

核心原因:Logger配置不匹配

你在production_settings.py里配置的日志记录器是django.request,但代码中通过logging.getLogger(__name__)获取的是当前视图模块对应的记录器(比如yourapp.views),两者没有关联,所以你的调试日志不会被配置的file处理器捕获。

具体修复步骤

1. 调整LOGGING配置,匹配你的视图模块记录器

修改LOGGING中的loggers部分,添加对应app或模块的记录器配置:

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'file': {
            'level': 'DEBUG',
            'class': 'logging.FileHandler',
            'filename': '/home/myuser/proj_container/debug.log',
        },
    },
    'loggers': {
        # 保留django.request的配置(如果需要捕获请求相关日志)
        'django.request': {
            'handlers': ['file'],
            'level': 'DEBUG',
            'propagate': False,
        },
        # 添加你的app的记录器(替换为实际app名称,比如myapp)
        'myapp': {
            'handlers': ['file'],
            'level': 'DEBUG',
            'propagate': False,
        },
        # 可选:配置根记录器,捕获所有未单独配置的日志
        # '': {
        #     'handlers': ['file'],
        #     'level': 'DEBUG',
        # },
    },
}

2. 移除logging.basicConfig调用

Django启动时会自动初始化日志系统,在视图中调用logging.basicConfig会干扰Django的日志配置逻辑,导致预期的处理器不生效,直接删除该行:

import logging
# 删除下面这行
# logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger(__name__)

3. 检查日志文件的写入权限

确保运行Django的系统用户(比如www-data或部署专用用户)对/home/myuser/proj_container/debug.log文件及所在目录有写入权限。可通过以下命令检查并调整:

# 查看文件权限信息
ls -l /home/myuser/proj_container/debug.log
# 修改文件所属用户(假设运行用户是www-data)
sudo chown www-data:www-data /home/myuser/proj_container/debug.log
# 调整目录权限确保可写入
sudo chmod 755 /home/myuser/proj_container

4. 验证代码分支触发逻辑

确认some_condition或some_other_condition确实被触发,避免因代码分支未执行导致日志无输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 05:05:11