cgitb — Трейсбэк менеджер для CGI скриптов


Модуль cgitb предоставляет специальный обработчик исключений для сценариев Python. (Его название немного обманчиво. Изначально он был разработан для отображения обширной трейсбэк информации в HTML для сценариев CGI. Позднее было обобщено, что эта информация также отображается в виде простого текста.) После активации этого модуля при возникновении необъявленного исключения отображается подробный отформатированный отчёт. Отчёт включает в себя трейсбэк с выдержками исходного код для каждого уровня, а также значениями аргументов и локальных переменных для текущих выполняемых функций, чтобы помочь отладить проблему. При необходимости эту информацию можно сохранить в файле, а не отправлять в браузер.

Чтобы включить эту функцию, просто добавьте в верхнюю часть сценария CGI:

import cgitb
cgitb.enable()

Опции функции enable() определяют, отображается ли отчёт в браузере и регистрируется ли отчёт в файле для последующего анализа.

cgitb.enable(display=1, logdir=None, context=5, format="html")

Эта функция заставляет модуль cgitb брать на себя обработку исключений по умолчанию путём установки значения sys.excepthook.

Необязательный аргумент display по умолчанию 1 и может быть установлен в 0 для подавления отправки трейсбэка в браузер. Если аргумент logdir присутствует, трейсбэк отч`ты записываются в файлы. Значением logdir должен быть каталог, в который будут помещены эти файлы. Необязательный аргумент context - количество строк контекстf, отображаемого вокруг текущей строки исходного кода в трейсбэке; по умолчанию используется значение 5. Если format необязательного аргумента является "html", выходные данные форматируются как HTML. Любое другое значение вынуждает вывод обычного текста. Значение по умолчанию - "html".

cgitb.text(info, context=5)

Эта функция обрабатывает исключение, описанное в info (3-кортеж, содержащий результат sys.exc_info()), форматируя трейсбэк как текст и возвращая результат как строку. Необязательный аргумент context - количество строк контекста, отображаемых вокруг текущей строки исходного кода в трейсбэке; по умолчанию используется значение 5.

cgitb.html(info, context=5)

Эта функция обрабатывает исключение, описанное в info (3-кортеж, содержащий результат sys.exc_info()), форматируя трейсбэк как HTML и возвращая результат как строку. Необязательный аргумент context - количество строк контекста, отображаемых вокруг текущей строки исходного код в трейсбэке; по умолчанию используется значение 5.

cgitb.handler(info=None)

Эта функция обрабатывает исключение с использованием настроек по умолчанию (т. е. отображает отчёт в браузере, но не журналирует его в файле). Это можно использовать, когда вы поймали исключение и хотите сообщить об этом с помощью cgitb. Необязательный аргумент info должен быть 3-кортежем, содержащим тип исключения, значение исключения и трейсбэк объект, точно так же, как кортеж возвращенный sys.exc_info(). Если аргумент info не указан, текущее исключение получается из sys.exc_info().