Перенаправить stdout и stderr в файл в Django с помощью wsgi

django mod-wsgi django-wsgi

2194 просмотра

3 ответа

Я пытаюсь заставить django работать с wsgi на общем хостинге, поэтому я не могу получить доступ к журналам сервера,

Я пытаюсь перенаправить вывод в файл в моем скрипте django.wsgi, например так:

saveout = sys.stdout
log_out = open('out.log', 'w')  
sys.stdout = log_out 

но это ошибка, которая у меня есть (в единственном журнале ошибок, к которому я могу получить доступ)

[Thu Oct 07 19:18:08 2010] [error] [client <ip>]   File "/home/myuser/public_html/django.wsgi", line 9, in <module>
[Thu Oct 07 19:18:08 2010] [error] [client <ip>] mod_wsgi (pid=30677): Exception occurred processing WSGI script '/home/myuser/public_html/django.wsgi'.

и это все ошибка, которую я могу получить

Строка 9 - это та, которая пытается открыть файл. Я пытался создать ранее файл, давая доступ для записи всем, без ранее созданного файла .. и ничего. В приложении я получаю только 500 ошибок сервера.

Есть ли правильный способ получить этот вывод без доступа к журналам Apache?

Отредактировано:

Используя абсолютные пути, я могу открывать файлы и записывать в них, но я получаю пустые файлы, если я не закрываю файлы в конце, это необходимо? Могу ли я оставить файлы открытыми? ..

Что касается исходной проблемы, даже если я использовал обработку исключений, напишите «конец все в порядке» для файла в конце моего скрипта, затем закройте файл, но все равно получите ошибку:

[Thu Oct 07 13:33:07 2010] [error] [client <ip>] mod_wsgi (pid=32541): Exception occurred processing WSGI script '/home/myuser/public_html/django.wsgi'.

Если я намеренно сообщаю об ошибке, она регистрируется в файле, так что, когда я получаю «хорошо», я думаю, что скрипт работает нормально, но в результате все равно эта ошибка сообщения ... никаких подсказок

Автор: Sam Источник Размещён: 08.07.2019 04:19

Ответы (3)


3 плюса

Вы не можете использовать относительные имена путей, как out.logв приложении WSGI. WSGI не указывает, куда будет указывать рабочий каталог, а mod_wsgi не устанавливает его, если это не указано специально в режиме демона.

Используйте абсолютный путь, основанный на корне вашего приложения. При необходимости вы можете использовать os.path.dirname(__file__)каталог, содержащий текущий скрипт / модуль.

Автор: bobince Размещён: 07.10.2010 06:50

0 плюса

надеюсь, ты получил ответ, мне понравилось

Автор: shubham devgan Размещён: 08.07.2019 01:18

-2 плюса

Решение

В конце концов, я решил проблему с помощью инструмента отладки, как описано здесь:

http://www.davidcramer.net/code/502/debugging-django-errors.html

Автор: Sam Размещён: 20.10.2010 06:55
Вопросы из категории :
32x32