Распечатать трассировку стека в журнале Pyhton

Raspecatat Trassirovku Steka V Zurnale Pyhton



Набор вызовов подхода в определенный момент представлен в трассировке стека. Когда программа вызывает исключение, Python создает трассировку стека, также известную как трассировка или обратная трассировка. В этой трассировке стека есть множество деталей, которые можно использовать для обнаружения проблемы. Пакет ведения журнала Python поставляется с несколькими фундаментальными функциями и имеет несколько уровней ведения журнала, включая «отладка», «информация», «предупреждение», «ошибка» и «критическое».

Пример 1. Печать трассировки стека в Python с использованием модуля трассировки

В этом примере мы будем использовать простой фрагмент кода, чтобы продемонстрировать, как реализовать модуль трассировки Python для печати трассировки стека. Этот пакет обратной связи включает в себя хорошо зарекомендовавшую себя функцию для сбора, хранения и демонстрации трассировки стека из компьютерных языков. Он точно дублирует операции печати трассировки стека скрипта. Если вам когда-нибудь понадобится просмотреть трассировку стека, это необходимо.

Другими словами, трассировка стека отображает каждую операцию, предшествовавшую той, которая привела к возникновению проблемы. Самая важная информация всегда сообщается в последней строке трассировки стека, когда идентифицируется ошибка. Все вызовы функций в результирующей ошибке можно использовать для быстрого обнаружения и устранения проблемы.







Начнем с реализации кода путем импорта библиотеки Python с трассировкой. Затем в следующей строке мы создаем массив и перечисляем элементы с некоторыми значениями. Значения списка массивов: «7», «8», «9» и «10». В списке массивов четыре значения. Этот список массивов был сохранен в ранее инициализированной переменной «A».



После этого мы используем термин «попытка» и значение «A = 6» в следующей строке. Мы используем блоки try-except в Python для управления исключениями. Этот подход используется для написания скрипта, который может вызвать ошибку в заголовке блока. Исключения по сути являются ошибками, похожими на синтаксические ошибки. Во время исключения программы обработка исключения — это уникальный акт реагирования на исключение. Возвращаясь к сценарию, мы используем «кроме» в следующей строке.



В блоке исключений мы используем «traceback.print exc()», что является сокращением от «печатное исключение». Мы используем функцию «print ()» внутри поля исключения, которое является «концом программы», чтобы этот оператор печатался при возникновении исключения. Теперь, если в блоке try возникает исключение, программа немедленно переходит к блокам исключений и продолжает работу. Если исключение не возникает, блок исключений полностью пропускается. Теперь, когда возникает исключение, мы видим в коде, что значение «6» было введено в поле попытки, хотя его нет в списке массивов. В результате код сразу же переходит в поле исключения и выводит на экран вывода оператор «завершение программы».





Различные вызовы функций, составляющие трассировку, упорядочены от самых последних до самых последних, снизу вверх. Все эти операции представлены двухстрочными операторами. Каждый вызов начинается с имени файла, порядкового номера и имени модуля, которые указывают на расположение кода. После этого он отображает оператор печати исключения «конец программы», поскольку значение «6» не было в объявленном списке, что приводит к выводу «индекс списка вне диапазона».



Пример 2. Печать трассировки стека в Python с использованием метода Logging.Exception()

В этом примере мы покажем, как использовать метод Python «logging.exception()» для вывода трассировки стека. Пакет ведения журнала в Python позволяет нам регистрировать ошибки, а также записывать ошибки и исключения. Модули ведения журнала предоставляют нам выбор модулей ведения журнала, включая «отладка», «информация», «предупреждение», «ошибка» и «критическое». Проще говоря, это слои модулей ведения журнала. Чтобы зарегистрировать исключение с ошибкой в ​​Python, используйте функцию «logging.exception()». Эта функция добавляет в этот регистратор отчет со статусом ERROR. Считается, что параметры для отладки. Информация об исключении прилагается к отчету журнала. Единственным местом, из которого можно вызвать эту процедуру, должны быть обработчики исключений.

Теперь давайте посмотрим на код. Во-первых, мы импортируем две библиотеки — первая из которых предназначена для ведения журналов, а вторая — для трассировки. Затем мы используем метод «basicConfig» с «логированием» и указываем уровень как «logging.Debug». Единственный аргумент, который принимает метод «getLogger()», — это «имя». Таким образом, мы используем его при использовании функции «logging.getlogger». Если указано имя, создается ссылка на экземпляр регистратора с этим именем; в противном случае возвращается корень. На один и тот же объект регистратора ссылаются многие операции getLogger() с одним и тем же идентификатором.

Затем мы используем try, и, как мы знаем, в блоке try мы пишем код, который может вызвать исключение. В этом случае мы используем «myfunction()». Если данная ситуация не соответствует, возникает исключение. Затем код немедленно переходит к блоку исключений. В этом блоге исключений мы используем «logging.info». Внутри него мы пишем сообщение, которое мы хотим напечатать, «произошло исключение». Это связано с тем, что если происходит исключение, просто возникает ошибка, а затем отображается это сообщение на экране. Но если ошибка не возникает, все сообщение об исключении игнорируется.

Мы также устанавливаем «exc info=True» в сообщении. Вся трассировка стека будет включена в журнал, когда для информации exc установлено значение True, аналогично тому, что происходит с «logger.exception()». Единственное отличие состоит в том, что вы можете быстро переключить уровень журнала с ошибки на что-то другое, просто заменив регистратор.

Теперь, когда в сценарии возникло исключение, первая строка вывода — это сообщение «произошло исключение», за которым следует уровень ведения журнала, который использовался в сценарии, то есть «информация». В этом случае имя регистратора отображается как корень. Затем появляется вызов трассировки, отображающий модуль, строку и имена файлов. Наконец, сообщение об ошибке «myfunction» не определено.

Давайте поговорим еще о коде, использующем ведение журнала. Метод exception() начинается с импорта библиотеки для регистрации. Далее две переменные — «m» и «n» — инициализируются и получают значения «7» и «0» соответственно. Блок try теперь используется на следующем шаге. В нем мы пишем код, который может вызвать исключение. Во-первых, мы объявляем переменную «o». Затем мы устанавливаем это «m», разделенное на «n». Это вызывает исключение, потому что знаменатель равен нулю, и мы не можем делить ни одно число на ноль, а значит, возникнут ошибки. В результате код переходит к блоку исключений, где используется «logging.error». Ошибка — это уровень логирования. Если возникает исключение, мы печатаем сообщение или заявление, в котором говорится, что «произошло исключение», и устанавливаем «exc info = true». Если мы не установим для него значение true, он печатает только блок исключений и не отображает информацию о трассировке.

Поскольку мы выбрали уровень «ОШИБКА» в нашем скрипте, он сначала отображает корень как имя регистратора, а затем сообщение «произошло исключение». Затем отображается информация трассировки, которая включает имя файла, номер строки и модуль. В следующей строке отображается уведомление об ошибке, поскольку знаменатель не может быть равен нулю. А поскольку знаменатель в этом коде равен нулю, ошибка называется ошибкой делителя нуля.

Вывод

В этой статье мы рассмотрели процесс печати трассировки стека в журнале Python, а также то, как использовать модуль трассировки для создания трассировки стека. В первом примере была импортирована библиотека трассировки и использовались методы try и exclude. Код был написан в блоке try. Если возникает исключение, он быстро переходит к блоку исключений и отображает оператор исключения на экране. Во втором примере мы использовали ведение журнала, аналогичное первому примеру. Метод exception() использует уровни ведения журнала «информация» и «ошибка». Если возникает исключение, он отображает оператор исключения.