簡體   English   中英

帶有Django的apache2-無法寫入日志文件

[英]apache2 with django - can't write to log file

我在apache2服務器上運行了django。

我的settings.py看起來像這樣:

WSGI_APPLICATION = 'my_app.wsgi.application'
...

LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
    'verbose': {
        'format': '%(levelname)s %(asctime)s %(module)s: %(message)s'
    }
},
'handlers': {
    'file': {
        'level': 'INFO',
        'class': 'logging.handlers.RotatingFileHandler',
        'filename': '../django.log',
        'formatter': 'verbose',
        'maxBytes': 1024 * 1024 * 5,  # 5 MB
        'backupCount': 5,
    },
},
'loggers': {
    'my_app': {
        'handlers': ['file'],
        'level': 'INFO',
        'propagate': True,
    },
},

}

我的想法基本上是創建一個日志,該日志將以INFO級別寫入django應用程序的所有組件。

我面臨的問題是,在運行服務器時,將使用root權限創建日志:

 ll ../django.log 
 -rw-r--r-- 1 root root 0 Jan  9 10:17 ../django.log

因此,當我嘗試登錄時會發生以下情況:

/var/log/apache2/error.log

[Wed Jan 09 11:37:43.677755 2019] [:error] [pid 1457:tid 140554321598208] [remote 192.168.254.52:60257] ValueError: Unable to configure handler 'file': [Errno 13] Permission denied: '../django.log'

我確實發現了這些問題: 寫入日志文件時權限被拒絕,Django:為生產中的網站設置了有效的日志記錄系統

如果我將文件的權限更改為www-data而不是root ,則可以使用。

我的問題是-在生產中將其設置在哪里? 應該手動更改嗎? 也許在settings.pyapache2-config中的某個地方?

我正在尋找Django日志記錄的最佳實踐。

編輯: ps aux | grep apache2顯示:

root      1444  0.0  0.0  97916  7452 ?        Ss   13:22   0:00 /usr/sbin/apache2 -k start

ps aux | grep wsgi顯示:

www-data  1447  0.0  0.2 510528 23692 ?        Sl   13:22   0:00 (wsgi:name -k start

謝謝!

事先在服務器中創建一個具有www-data權限的日志文件夾,並將其路徑保存在環境變量中,在settings.py文件中使用python的os.getenv('LOG_PATH')使用該路徑。

暫無
暫無

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

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