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

使用Django1.11和Python2.7配置file日志处理器遇权限拒绝错误求助

解决Django 1.11 + Python 2.7日志handler权限拒绝问题

你碰到的这个ValueError: Unable to configure handler 'file': [Errno 13] Permission denied错误,本质是运行Django的进程没有权限写入指定的日志文件路径——也就是/var/log/welnity/debug.log或者它的父目录/var/log/welnity。下面是具体的解决步骤:

1. 先排查权限现状

首先确认日志目录和文件的权限情况:

  • 先检查/var/log/welnity目录是否存在,如果不存在先创建:
    sudo mkdir -p /var/log/welnity
    
  • 查看目录的所属用户和权限:
    ls -ld /var/log/welnity
    
  • 如果debug.log已经存在,查看文件的权限:
    ls -l /var/log/welnity/debug.log
    
  • 同时确定运行Django的用户是谁:
    • 本地开发用runserver的话,就是你当前登录的系统用户;
    • 生产环境用uWSGI/nginx的话,通常是www-data(Debian/Ubuntu)或者apache(CentOS)。

2. 针对性修复权限

根据上面的排查结果,选一种方式修复:

方式一:修改目录/文件的所属用户(推荐,更安全)

把日志目录的所有权改成运行Django的用户,比如假设运行用户是www-data:

sudo chown -R www-data:www-data /var/log/welnity

如果文件已经存在,这条命令会同时修改目录下所有文件的所有权。

方式二:调整目录/文件的权限(仅在方式一不可行时使用)

如果不想修改所有权,可以给目录添加其他用户的写权限(注意:生产环境尽量避免这种方式,有安全风险):

# 给目录添加所有用户的写权限
sudo chmod -R 775 /var/log/welnity
# 给已存在的日志文件添加写权限
sudo chmod 664 /var/log/welnity/debug.log

3. 本地开发的临时替代方案

如果是本地开发测试,不想折腾系统目录权限,可以直接把日志文件路径改到项目内的目录:
在settings.py的LOGGING配置中,修改handler 'file'的filename:

import os

LOGGING = {
    # 其他配置...
    'handlers': {
        'file': {
            'level': 'DEBUG',
            'class': 'logging.FileHandler',
            # 改成项目根目录下的logs文件夹
            'filename': os.path.join(BASE_DIR, 'logs/debug.log'),
        },
    },
    # 其他配置...
}

然后在项目根目录创建logs文件夹:

mkdir logs

这样本地用户肯定有权限写入这个目录。

额外提醒

注意Python 2.7和Django 1.11都已经停止官方维护了,不再接收安全更新,如果是生产环境项目,建议尽早规划升级到Python 3.x + 受支持的Django版本。


报错回溯信息:

Traceback (most recent call last):
  File "manage.py", line 22, in <module>
    execute_from_command_line(sys.argv)
  File "/usr/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 363, in execute_from_command_line
    utility.execute()
  File "/usr/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 337, in execute
    django.setup()
  File "/usr/local/lib/python2.7/site-packages/django/__init__.py", line 22, in setup
    configure_logging(settings.LOGGING_CONFIG, settings.LOGGING)
  File "/usr/local/lib/python2.7/site-packages/django/utils/log.py", line 75, in configure_logging
    logging_config_func(logging_settings)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/logging/config.py", line 794, in dictConfig
    dictConfigClass(config).configure()
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/logging/config.py", line 576, in configure
    '%r: %s' % (name, e))
ValueError: Unable to configure handler 'file': [Errno 13] Permission denied: '/var/log/welnity/debug.log'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:01:30