簡體   English   中英

Django日志無法在Apache中工作。

[英]Django logging not working in apache.?

我配置了django日志記錄,並使用DEBUG = False運行./manage.py runserver ,一切正常。 但是,一旦我通過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文件夾中創建文件。 我很困惑。

看起來您的Apache服務器正在嘗試創建此路徑/logs/django_db.log

我建議您將絕對路徑設置為logs/django_db.log file

只需在路徑上創建一個文件,例如: /var/log/django_db.log並確保apache用戶可以讀寫該文件。

似乎您的腳本將/作為當前目錄。 嘗試設置日志文件的絕對路徑:

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

並且不要忘記權限。 您的腳本很有可能是從wwwnobody用戶運行的。

好的,其他建議。 我必須指出一條絕對的道路。 這就是我在settings.py所做的

    #settings.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

現在一切都好.. :)

也許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文件執行類似的操作。 無論您嘗試使用哪種系統,它都可以工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM