2012-05-03 5 views
1

Я разработал приложение web.py и протестировал его в автономном режиме (запуск myapp.py из командной строки), а его вывод stdout был очень полезен для отладки. Теперь я запускаю его под Apache/mod_wsgi, и многие вещи не работают. Например, моя основная схема аутентификации, которая использовалась для работы, всегда отказывается от имени пользователя/пароля, которое она дала. Первое, что мне нужно - это посмотреть на сообщения отладки, которые у меня были. Но выход сценария нигде не найден.Как я могу вернуть журнал stdout в web.py при работе под Apache/mod_wsgi?

Как я могу снова «отлаживать отпечатки»?

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

+0

Какую версию mod_wsgi вы используете? Убедитесь, что вы используете mod_wsgi 3.0+, а вывод «print» должен заканчиваться в журнале ошибок Apache. –

ответ

1
>>> class STDOUT(object): 
    def __init__(self, next): 
     self.next = next 
     self.file = open('stdout.txt', 'w') 
    def write(self, thing): 
     self.file.write(thing) 
     l.append(thing) 
     self.next.write(thing) 

>>> import sys 
>>> s = STDOUT(sys.stdout) 
>>> sys.stdout = s 
>>> l = [] 
>>> print 4 
4 
>>> l 
['4', '\n'] 
+0

Не работает внутри web.py. Я использовал сжатую версию вашего кода, которая не записывается в «предыдущий» stdout, и не добавляет к внутреннему массиву. В файл ничего не входит. – JCCyC

+0

Я не могу понять, почему это не должно работать. Это работало все годы для меня. Может быть, произошел какой-то импорт? вы поставили попытку: кроме: вокруг всего модуля и где-то написано в файл? Вы можете использовать traceback.print_exc (file = ...), чтобы распечатать ошибку. – User