Отпечатайте Stacktrace в Pyhton Log

Otpecatajte Stacktrace V Pyhton Log



Колекция от извиквания на подход в определен момент е представена в проследяване на стека. Когато програма повдигне изключение, Python генерира проследяване на стека, известно също като проследяване или обратно проследяване. В това проследяване на стека има различни подробности, които могат да бъдат използвани за локализиране на проблема. Пакетът за регистриране на Python идва с няколко основни функции и има множество нива на регистриране, включително „debug“, „info“, „warning“, „error“ и „critical“.

Пример 1: Отпечатайте Stacktrace в Python чрез използване на модула Traceback

В този пример ще използваме прост фрагмент от код, за да демонстрираме как да внедрим модула за проследяване на Python за отпечатване на проследяването на стека. Този пакет за проследяване включва много харесвана функция за събиране, съхраняване и показване на следи на стека от компютърни езици. Той вярно дублира операциите за отпечатване на проследяване на стека на скрипт. Ако някога ви се наложи да видите проследяването на стека, това е от съществено значение.

С други думи, проследяването на стека показва всяка операция, която е предшествала тази, която е довела до проблема. Най-важната информация винаги се докладва на последния ред от трасирането на стека, когато се идентифицира повредата. Всички извиквания на функцията в произтичащата грешка могат да се използват за бързо локализиране и разрешаване на проблема.







Нека започнем с внедряване на кода чрез импортиране на библиотеката на Python за проследяване. След това в следващия ред създаваме масив и изброяваме елементите с някои стойности. Стойностите на списъка с масиви са „7“, „8“, „9“ и „10“. В списъка с масиви има четири стойности. Този списък с масиви беше записан в предварително инициализираната променлива „A“.



След това използваме термина „опитай“ и стойността „A=6“ в следващия ред. Ние използваме блоковете try-except в Python, за да управляваме изключенията. Този подход се използва за написване на скрипт, който може да предизвика грешка в заглавката на блока. Изключенията са по същество грешки, подобни на синтактичните грешки. По време на изключение на програма, обработката на изключение е уникален акт на отговор на изключението. Връщайки се към скрипта, използваме „освен“ в следващия ред.



В блока за изключение използваме „traceback.print exc()“, което е съкращение от „изключение за печат“. Ние използваме функцията „print()“ в полето за изключение, което е „край на програмата“, така че този оператор да се отпечата, когато възникне изключение. Сега, ако възникне изключение в полето за опит, програмата незабавно преминава към блоковете с изключение и продължава. Ако не възникне изключение, блокът с изключения се пропуска изцяло. Сега, когато се случи изключението, можем да видим в кода, че стойността „6“ е въведена в полето за опит, въпреки че не е в списъка с масиви. В резултат на това кодът незабавно отива в полето за изключение и отпечатва оператора „приключване на програмата“ в изходния дисплей.





Различните извиквания на функции, които съставляват обратното проследяване, са подредени от най-новите към най-малко последните, отдолу нагоре. Всички тези операции са представени от двуредови изрази. Всяко повикване започва с името на файла, поредния номер и името на модула, всички от които показват местоположението на кода. След това той показва оператора за печат на изключение „край на програмата“, тъй като стойността „6“ не е в декларирания списък, което води до изхода „индексът на списъка е извън диапазона“.



Пример 2: Отпечатване на Stacktrace в Python чрез използване на метода Logging.Exception()

В този пример ще демонстрираме как да използваме метода “logging.exception()” на Python за извеждане на проследяване на стека. Пакетът за регистриране в Python ни позволява да регистрираме грешките, както и да записваме грешките и изключенията. Модулите за регистриране ни дават избор от модули за регистриране, включително „debug“, „info“, „warning“, „error“ и „critical“. Това са по същество слоеве от модули за регистриране, казано просто. За да регистрирате изключение с грешка в Python, използвайте функцията “logging.exception()”. Тази функция добавя отчет със статус ГРЕШКА към този регистратор. Смята се, че параметрите са за отстраняване на грешки. Информацията за изключението е приложена към отчета за регистриране. Единственото място, от което да се извика тази процедура, трябва да бъдат манипулаторите на изключения.

Сега нека да разгледаме кода. Първо, ние импортираме две библиотеки – първата от които е регистриране, а втората е проследяване. След това използваме метода “basicConfig” с “logging” и посочваме нивото като “logging.Debug”. Единственият аргумент, който приема методът “getLogger()” е “name”. Затова го използваме, когато използваме функцията “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 и exception. Кодът беше написан в полето за опит. Ако възникне изключение, той бързо преминава към блока за изключение и показва оператора за изключение на екрана. Във втория пример използвахме регистриране, което е подобно на първия пример. Методът exception() използва нивата „информация“ и „грешка“ на регистриране. Ако възникне изключение, той показва изявление за изключение.