#django #django-rest-framework #wsgi #django-logging
#django #django-rest-framework #wsgi #django-ведение журнала
Вопрос:
Я довольно новичок в разработке серверной части. Я пытался записать какой-то журнал с помощью фреймворка Django rest. Я настроил режим WSGI, и 000-default.conf
файл
<VirtualHost *:80>
ServerAdmin user@gmail.com
DocumentRoot /home/ubuntu/myproject_backend/myproject
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Alias /static /home/ubuntu/myproject_backend/myproject/static
<Directory /home/ubuntu/myproject_backend/myproject/static>
Require all granted
</Directory>
<Directory /home/ubuntu/myproject_backend/myproject>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
WSGIDaemonProcess myproject python-path=/home/ubuntu/myproject_backend/myproject python-home=/home/ubuntu/myproject_backend/env
WSGIProcessGroup myproject
WSGIScriptAlias / /home/ubuntu/myproject_backend/myproject/myproject/wsgi.py
WSGIPassAuthorization On
</VirtualHost>
Я добавил LOGGING
в setting.py
LOGGING = {
'version': 1,
# Version of logging
'disable_existing_loggers': False,
#disable logging
'handlers': {
'file': {
'level': 'DEBUG',
'class': 'logging.FileHandler',
'filename': 'my_log.log',
}
},
'loggers': {
'django': {
'handlers': ['file'],
'level': env("LOG_LEVEL"),
'propagate': True,
},
},
}
Я попытался с помощью простого журнала предупреждений
logging.warning("Logging Tutorials")
Теперь журнал работает, когда я тестировал локально с runserver
помощью команды. Однако, когда я отправил код на сервер, ему было отказано в разрешении на запись error.log
файла.
PermissionError: [Errno 13] Permission denied
Мне было интересно, как мне дать разрешение и какому пользователю? сервер представляет собой ОС ubuntu.
Я знаю, что есть несколько сообщений об этой проблеме. Однако я не мог понять, что именно мне нужно делать. Заранее спасибо.
Ответ №1:
Журналы, которые вы пишете сами, лучше всего помещать в базовый каталог проекта или подкаталог. Например, я помещаю журналы var/log
под базовым каталогом. Однако это предполагает, что у запущенного пользователя есть разрешение на запись в этот каталог, а это не всегда так и зависит от развертывания.
Для записи журнала в одном и том же местоположении, как локальном, так и производственном, используйте BASE_DIR, который предварительно определен в вашем файле настроек:
LOGGING = {
'version': 1, # Version of logging
'disable_existing_loggers': False, #disable logging
'handlers': {
'file': {
'level': 'DEBUG',
'class': 'logging.FileHandler',
'filename': f'{BASE_DIR}/my_log.log',
}
},
'loggers': {
'django': {
'handlers': ['file'],
'level': env("LOG_LEVEL"),
'propagate': True,
},
},
}