Django 日志记录在 apache 中不起作用。?

问题描述 投票:0回答:4

我配置了 django 日志记录并使用

./manage.py runserver
运行
DEBUG = False
,一切正常。但是,一旦我通过 URL 访问我的服务器,Apache 就会引发 500 错误,这是 error.log 的最后几行

ValueError: Unable to configure handler 'db_handler': [Errno 2] N
o such file or directory: '/logs/django_db.log'

这是声明 db_handler 的 settings.py 文件的片段。

    #settings.py
    ...
    'db_handler': {
        'level':'DEBUG',
        'class':'logging.handlers.RotatingFileHandler',
        'filename': 'logs/django_db.log',
        'maxBytes': 1024*1024*5, # 5 MB
        'backupCount': 5,
        'formatter':'standard',
    },
    ...

我不确定我做错了什么。我还在包含

settings.py
的目录的父目录中创建了一个名为logs的目录,当我
./manage.py runserver
时,它工作正常并在logs文件夹中创建文件。我很困惑。

python django apache
4个回答
1
投票

看起来您的 Apache 服务器正在尝试创建此路径

/logs/django_db.log

我建议您设置

logs/django_db.log file
的绝对路径。

只需在路径上创建一个文件,例如:

/var/log/django_db.log
并确保
apache
用户可以读取和写入该文件。


1
投票

似乎您的脚本将

/
作为当前目录。尝试设置日志文件的绝对路径:

'db_handler': {
    ...
    'filename': '/path/to/logs/django_db.log',
    ...
},

不要忘记权限。您的脚本很可能是从

www
nobody
用户运行的。


1
投票

好吧,按照其他人的建议。我必须指向一个绝对路径。这就是我在

settings.py

中所做的

设置.py

    'db_handler': {
        'level':'DEBUG',
        'class':'logging.handlers.RotatingFileHandler',
        'filename': os.path.join(BASE_DIR, 'logs/django_db.log'),
        'maxBytes': 1024*1024*5, # 5 MB
        'backupCount': 5,
        'formatter':'standard',
    }

然后在父目录中我执行了此操作。

chmod 666 logs/*.log

现在一切都很好..:)


0
投票

也许 Apache 无法解析 settings.py 文件中给定的相对路径。为了安全起见,请避免对 settings.py 文件中的链接进行硬编码。您可以使用python的

os
模块来构造django_db.log文件的绝对路径。例如,我的 SQLite 数据库文件路径为 db/mypy_app.db。现在要构造它的绝对路径,我会在我的 settings.py 文件中编写类似的内容:

import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
SETTINGS_DIR = os.path.dirname(__file__)
PROJECT_PATH = os.path.join(SETTINGS_DIR, os.pardir)
PROJECT_PATH = os.path.abspath(PROJECT_PATH)
DATABASE_PATH = os.path.join(PROJECT_PATH, 'db/mypy_app.db')
DATABASE_PATH = os.path.abspath(DATABASE_PATH)

然后在代码中使用

DATABASE_PATH
变量。尝试对logs/django_db.log 文件执行类似的操作。无论您在任何系统上尝试,这都会起作用。

© www.soinside.com 2019 - 2024. All rights reserved.