У меня запущен django на сервере apache2.
my 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,
},
},
}
Моя идея заключалась в создании журнала, в который будут записываться все компоненты моего приложения django, с уровнем INFO.
Проблема, с которой я сталкиваюсь, заключается в том, что при запуске сервера журнал создается с правами доступа root
:
ll ../django.log
-rw-r--r-- 1 root root 0 Jan 9 10:17 ../django.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.py
или apache2-config
?
Я ищу лучшую практику ведения журнала django.
EDIT:
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
Спасибо!