Ведение журнала с помощью фреймворка django rest с помощью WSGI

#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,
        },
    },
}