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
相关产品推荐
相关产品推荐

