Когда я разрабатываю какое-то веб-приложение, то практически не пользуюсь разного рода отладчиками и всякими вспомогательными инструментами: в 90% случаев с головой хватает print variable
для того, чтоб понять, в чём проблема. Ну, иногда я всё-таки делаю import pdb; pdb.set_trace()
, в особо запутанных случаях.
Но тут буквально вчера мне показали пальцем на очень клёвую штуку - FirePython. Состоит эта штука из двух частей - небольшая либа на питоне и плагин к Firebug‘у. Этот тандем занимается очень полезным делом - показывает всё, что логается в питоновском коде1, в табе файрбага.
Штука невероятно удобная - теперь для разработки постоянно необходимы только два приложения: редактор и браузер, плюс не придётся высматривать вывод принтов в выводе runserver’а. Относительно обычного использования logging
тоже хватает плюсов - как минимум не требуется следить за файлами и их путями (на создание которых может и не быть прав), к тому же сразу готов неплохой просмотрщик логов с возможностью фильтрации.
Я сегодня написал к файрпитону две миддлвари - джанговскую и WSGI, так что теперь его использование - вопрос пары движений. ;) Вкратце: надо установить сам плагин, который зависит от Firebug 1.3 (он ещё бета, но я и так использую Firefox 3.1, так что меня это не пугает :P). После этого сделать easy_install firepython
. Как вариант: склонировать проект с гитхаба и положить каталог firepython
из каталога python
в sys.path
или директорию проекта.
После этого надо просто включить миддлварь, дописав в MIDDLEWARE_CLASSES
путь к ней: firepython.django.FirePythonDjango
. Для использования в WSGI-приложениях есть аналогичная миддлварь: firepython.wsgi.FirePythonWSGI
, которую можно использовать как и любую другую WSGI-миддлварь, оборачивая вокруг объекта приложения. :)
Использовать это в коде легко:
import logging
logging.debug('what you want to debug today?')
Логично, что вместо дебага можно использовать любой уровень - потом их можно фильтровать в морде FirePython’а.
-
Ну не совсем всё, а только то, что логировалось в то время, пока FirePython был хендлером в logging. ↩︎