Django Logging – Файл журнала из обработчика не найден

Вопрос: У меня есть регистрация в моем проекте Django. Он работает локально в разработке, но это создает проблемы в производстве. settings.py следующие: import os PROJECT_PATH = os.path.abspath(os.path.dirname(__name__)) . . . 'handlers': { 'log_file': { 'level': 'INFO', 'class': 'logging.handlers.RotatingFileHandler', 'filename': os.path.join(PROJECT_PATH, 'logs/django.log'), 'maxBytes': '16777216', 'formatter': 'verbose' }, . . . Я продолжаю получать эту ошибку в

Вопрос:

У меня есть регистрация в моем проекте Django. Он работает локально в разработке, но это создает проблемы в производстве. settings.py следующие:

import os PROJECT_PATH = os.path.abspath(os.path.dirname(__name__)) . . . ‘handlers’: { ‘log_file’: { ‘level’: ‘INFO’, ‘class’: ‘logging.handlers.RotatingFileHandler’, ‘filename’: os.path.join(PROJECT_PATH, ‘logs/django.log’), ‘maxBytes’: ‘16777216’, ‘formatter’: ‘verbose’ }, . . .

Я продолжаю получать эту ошибку в /var/log/apache2/error.log:

ValueError: Unable to configure handler ‘log_file’: [Errno 2] No such file or directory: ‘/logs/django.log’

Я протестировал это в оболочке Django, выполнив код и установив PROJECT_PATH вручную, и, похоже, вернул правильный путь. Кроме того, я проверил и проверил разрешения на файл журнала. Хотя это и не нужно, я изменил его на 777 чтобы проверить. Еще не повезло.

Мой локальный журнал заполняет все, что я ожидаю, пока журнал производства пуст.

Подумав об этом, я полагаю, что это местоположение журнала, вероятно, не самое лучшее, но если бы оно работало на производстве, по крайней мере, я бы знал… Тогда я мог бы работать над изменением местоположения.

Что мне не хватает?

Лучший ответ:

Хотя я действительно хотел бы получить ответ на этот вопрос, я решил сделать другой подход, чтобы я мог двигаться дальше. Кажется, этот вопрос не вызывает достаточного внимания, и сейчас я не чувствую себя щедростью, поэтому сейчас я отключил ведение журнала в файл. Я все равно перепроектирую свой подход, так что это похоже на приличную идею.

То, что я придумал временно, которое, похоже, работает и не дает ошибок, – это (для определения обработчика файла):

‘file’: { ‘level’: ‘DEBUG’, ‘class’: ‘logging.FileHandler’, ‘filename’: ‘/some/fixed/path/to/logs/django.log’, },

Обратите внимание, что до того, как я использовал значение, полученное из os.path.join(PROJECT_PATH, ‘logs/django.log’). Не знаю, почему это не сработало, но это был преступник. Таким образом, хотя этот бит был прав: PROJECT_PATH = os.path.abspath(os.path.dirname(__name__)) (даже подтвержденный в оболочке python), он не работал в производстве.

Оцените статью
Добавить комментарий