Spausdinkite „Stacktrace“ programoje „Pyhton Log“.

Spausdinkite Stacktrace Programoje Pyhton Log



Požiūrio iškvietimų rinkinys tam tikru momentu yra pavaizduotas stacktrace. Kai programa pateikia išimtį, Python generuoja stacktrace, taip pat žinomą kaip sekimas arba atgalinis sekimas. Šiame kamino takelyje yra įvairių detalių, kurias galima panaudoti norint nustatyti problemą. „Python“ registravimo pakete yra keletas pagrindinių funkcijų ir kelių registravimo lygių, įskaitant „derinimą“, „informaciją“, „įspėjimą“, „klaidą“ ir „kritinį“.

1 pavyzdys: Spausdinkite „Stacktrace“ naudodami „Python“ naudodami „Traceback“ modulį

Šiame pavyzdyje naudosime paprastą kodo dalį, kad parodytume, kaip įdiegti Python sekimo modulį, kad būtų spausdinamas kamino pėdsakas. Šiame sekimo pakete yra labai mėgstama funkcija, skirta rinkti, saugoti ir rodyti dėklo pėdsakus iš kompiuterių kalbų. Jis tiksliai dubliuoja scenarijaus kamino pėdsakų spausdinimo operacijas. Jei kada nors reikės peržiūrėti kamino pėdsaką, tai būtina.

Kitaip tariant, dėklo pėdsakas rodo kiekvieną operaciją, kuri buvo atlikta prieš tą, dėl kurios kilo problema. Svarbiausia informacija visada pateikiama paskutinėje krūvos pėdsako eilutėje, ty tada, kai nustatomas gedimas. Visi funkcijos iškvietimai atsiradusioje klaidoje gali būti naudojami norint greitai rasti ir išspręsti problemą.







Pradėkime nuo kodo įdiegimo importuodami atsekimo Python biblioteką. Tada sekančioje eilutėje sukuriame masyvą ir išvardijame elementus su tam tikromis reikšmėmis. Masyvo sąrašo reikšmės yra „7“, „8“, „9“ ir „10“. Masyvo sąraše yra keturios reikšmės. Šis masyvo sąrašas buvo išsaugotas anksčiau inicijuotame kintamajame „A“.



Po to mes naudojame terminą „bandyti“ ir reikšmę „A=6“ kitoje eilutėje. Išimčių tvarkymui naudojame Python „try-except“ blokus. Šis metodas naudojamas rašant scenarijų, kuris gali sukelti klaidą bloko antraštėje. Išimtys iš esmės yra klaidos, panašios į sintaksės klaidas. Programos išimties metu išimčių tvarkymas yra unikalus atsakas į išimtį. Grįžtant prie scenarijaus, kitoje eilutėje naudojame „išskyrus“.



Išimčių bloke naudojame „traceback.print exc()“, kuris yra „spausdinimo išimties“ trumpinys. Mes naudojame funkciją „print()“ išimties laukelyje, kuris yra „programos pabaiga“, kad šis teiginys būtų spausdinamas, kai atsiranda išimtis. Dabar, jei bandymo laukelyje įvyksta išimtis, programa iš karto pereina prie blokų išskyrus ir tęsia. Jei išimtis neįvyksta, išimties blokas visiškai praleidžiamas. Dabar, kai įvyksta išimtis, kode matome, kad vertė „6“ buvo įvesta į bandomąjį laukelį, nors jos nėra masyvo sąraše. Dėl to kodas iš karto patenka į išimties laukelį ir išvesties ekrane išspausdina teiginį „programa baigiasi“.





Įvairūs funkcijų iškvietimai, sudarantys sekimą, yra išdėstyti nuo naujausio iki mažiausiai naujausio, iš apačios į viršų. Visos šios operacijos vaizduojamos dviejų eilučių teiginiais. Kiekvienas skambutis prasideda failo pavadinimu, eilės numeriu ir modulio pavadinimu, kurie visi nurodo kodo vietą. Po to rodomas išimties spausdinimo teiginys „programos pabaiga“, nes reikšmės „6“ nebuvo deklaruotame sąraše, todėl gaunama išvestis „sąrašo indeksas nepatenka į diapazoną“.



2 pavyzdys: Spausdinkite „Stacktrace“ „Python“ naudodami Logging.Exception() metodą

Šiame pavyzdyje parodysime, kaip naudoti Python „logging.exception()“ metodą kamino sekimui išvesti. Registravimo paketas Python leidžia registruoti klaidas, taip pat įrašyti klaidas ir išimtis. Registravimo moduliai suteikia mums įvairius registravimo modulius, įskaitant „derinimo“, „informacijos“, „įspėjimo“, „klaidos“ ir „kritinio pobūdžio“. Tai iš esmės yra registravimo modulių sluoksniai, paprasčiau tariant. Norėdami užregistruoti išimtį su klaida Python, naudokite funkciją „logging.exception()“. Ši funkcija prideda ataskaitą su KLAIDOS būsena prie šio registratoriaus. Manoma, kad parametrai yra skirti derinimui. Informacija apie išimtį pridedama prie registravimo ataskaitos. Vienintelė vieta, iš kurios galima iškviesti šią procedūrą, turėtų būti išimčių tvarkyklės.

Dabar pažiūrėkime į kodą. Pirma, importuojame dvi bibliotekas – pirmoji yra registruojama, o antroji – sekimas. Tada mes naudojame „basicConfig“ metodą su „logging“ ir nurodome lygį kaip „logging.Debug“. Vienintelis argumentas, kurį naudoja „getLogger()“ metodas, yra „vardas“. Taigi mes naudojame jį naudodami funkciją „logging.getlogger“. Jei suteikiamas pavadinimas, sugeneruojama nuoroda į registratoriaus egzempliorių tokiu pavadinimu; kitu atveju grąžinama šaknis. Tas pats registravimo objektas nurodomas daugelyje getLogger() operacijų su ta pačia tapatybe.

Tada bandome ir, kaip žinome, bandome bloke, įrašome kodą, kuris gali sukelti išimtį. Šiuo atveju naudojame „myfunction()“. Jei situacija nesutampa, atsiranda išimtis. Tada kodas iš karto peršoka į bloką „Išskyrus“. Šiame išimties tinklaraštyje naudojame „logging.info“. Jo viduje rašome pranešimą, kurį norime atspausdinti, kuris yra „įvyko išimtis“. Taip yra todėl, kad jei įvyksta išimtis, tiesiog įvyksta klaida, tada ekrane rodomas šis pranešimas. Bet jei klaida neįvyksta, ji ignoruoja visą išimties pranešimą.

Mes taip pat nustatėme „exc info=True“ su pranešimu. Visa dėklo seka bus įtraukta į registravimą, kai exc informacija bus nustatyta į True, panašiai kaip ir su „logger.exception()“. Vienintelis skirtumas yra tas, kad galite greitai pakeisti žurnalo lygį iš klaidos į kitą, tiesiog pakeisdami registratorių.

Dabar, kai scenarijuje įvyko išimtis, pirmoji išvesties eilutė yra pranešimas „įvyko išimtis“, po kurio seka registravimo lygis, kuris buvo naudojamas scenarijuje, kuris yra „informacija“. Šiuo atveju registratoriaus vardas rodomas kaip šaknis. Tada pasirodo sekimo skambutis, kuriame rodomi modulio, eilutės ir failų pavadinimai. Galiausiai klaidos pranešimas „myfunction“ neapibrėžtas.

Pakalbėkime apie dar keletą kodų, kuriuose naudojamas registravimas. Išimties () metodas prasideda importuojant biblioteką registravimui. Toliau inicijuojami du kintamieji – „m“ ir „n“ ir jiems suteikiamos atitinkamai „7“ ir „0“ reikšmės. Bandymo blokas dabar naudojamas kitame žingsnyje. Jame įrašome kodą, kuris gali sukelti išimtį. Pirmiausia deklaruojame kintamąjį „o“. Tada nustatome, kad „m“ padalintas iš „n“. Tai sukelia išimtį, nes vardiklis yra nulis ir mes negalime padalyti jokio skaičiaus iš nulio, o tai reiškia, kad atsiras klaidų. Dėl to kodas pereina į bloką išskyrus, kuriame naudojamas „logging.error“. Klaida yra registravimo lygis. Jei įvyksta išimtis, išspausdiname pranešimą arba pareiškimą, kuriame sakoma: „Įvyko išimtis“ ir nustatome „exc info=true“. Jei nenustatysime tiesos, jis išspausdins tik išimties bloką ir nerodo atgalinės informacijos.

Kadangi scenarijuje pasirinkome „KLAIDA“ lygį, pirmiausia jis rodo šaknį kaip registratoriaus pavadinimą, o po to – pranešimą „Įvyko išimtis“. Tada rodoma sekimo informacija, apimanti failo pavadinimą, eilutės numerį ir modulį. Tada kitoje eilutėje rodomas pranešimas apie klaidą, nes vardiklis negali būti nulis. Ir kadangi šiame kode vardiklis yra nulis, klaida vadinama nulinio daliklio klaida.

Išvada

Šiame straipsnyje apžvelgėme dėklo pėdsakų spausdinimo Python žurnale procesą ir kaip naudoti sekimo modulį dėklo pėdsakui sukurti. Pirmajame pavyzdyje buvo importuota sekimo biblioteka ir buvo naudojami trynimo ir pašalinimo metodai. Kodas buvo įrašytas trynimo laukelyje. Jei įvyksta išimtis, jis greitai pereina į išimties bloką ir ekrane parodo išimties teiginį. Antrame pavyzdyje naudojome registravimą, kuris panašus į pirmąjį pavyzdį. Išimties () metodas naudoja registravimo „informacijos“ ir „klaidos“ lygius. Jei įvyksta išimtis, rodomas išimties teiginys.