Ispiši Stacktrace u Pyhton Logu

Ispisi Stacktrace U Pyhton Logu



Zbirka pristupnih poziva u određenom trenutku predstavljena je u tragu snopa. Kada program pokrene iznimku, Python generira stacktrace, također poznat kao traceback ili backtrace. Postoji niz detalja u ovom tragu snopa koji se mogu iskoristiti za lociranje problema. Python paket za bilježenje dolazi s nekoliko temeljnih značajki i ima više razina bilježenja uključujući 'debug', 'info', 'warning', 'error' i 'critical'.

Primjer 1: Ispis Stacktracea u Pythonu korištenjem Traceback modula

U ovom ćemo primjeru upotrijebiti jednostavan dio koda da pokažemo kako implementirati Pythonov modul traceback za ispis praćenja stoga. Ovaj paket praćenja uključuje vrlo popularnu značajku za prikupljanje, pohranjivanje i izlaganje tragova hrpa iz računalnih jezika. Vjerno duplicira operacije ispisa praćenja hrpa skripte. Ako ikada budete trebali pregledati praćenje hrpe, to je bitno.

Drugim riječima, praćenje stoga prikazuje svaku operaciju koja je prethodila onoj koja je rezultirala problemom. Najvažnije informacije uvijek se objavljuju u zadnjem retku traga stoga, kada se identificira greška. Svi pozivi funkcija u nastaloj pogrešci mogu se koristiti za brzo lociranje i rješavanje problema.







Počnimo s implementacijom koda putem uvoza traceback Python biblioteke. Zatim, u sljedećem retku, kreiramo niz i ispisujemo elemente s nekim vrijednostima. Vrijednosti popisa polja su '7', '8', '9' i '10'. Postoje četiri vrijednosti u popisu polja. Ovaj popis polja je spremljen u prethodno inicijaliziranoj varijabli “A”.



Nakon toga koristimo izraz 'pokušaj' i vrijednost 'A=6' u sljedećem retku. Koristimo blokove try-except u Pythonu za upravljanje iznimkama. Ovaj se pristup koristi za pisanje skripte koja bi mogla izazvati pogrešku u zaglavlju bloka. Iznimke su u biti pogreške, slične pogreškama u sintaksi. Tijekom iznimke programa, rukovanje iznimkom je jedinstveni čin odgovora na iznimku. Vraćajući se na skriptu, koristimo 'osim' u sljedećem retku.



U bloku izuzetaka koristimo “traceback.print exc()” što je skraćenica za “ispis iznimke”. Koristimo funkciju 'print()' unutar okvira iznimke koji je 'kraj programa' tako da se ova izjava ispisuje kada se pojavi iznimka. Sada, ako se pojavi iznimka u okviru za pokušaj, program odmah prelazi na blokove osim i nastavlja. Ako se iznimka ne dogodi, blok iznimke se u potpunosti preskače. Sada kada se dogodi iznimka, možemo vidjeti u kodu da je vrijednost '6' unesena u okvir za pokušaj iako nije na popisu polja. Kao rezultat toga, kod odmah ide u okvir za iznimke i ispisuje izjavu 'program završava' na izlaznom zaslonu.





Različiti pozivi funkcija koji čine povratno praćenje poredani su od najnovijeg do najmanje nedavnog, od dna prema vrhu. Sve ove operacije predstavljene su izjavama u dva retka. Svaki poziv počinje nazivom datoteke, sekvencijskim brojem i nazivom modula, a svi oni označavaju lokaciju koda. Nakon toga prikazuje izjavu o ispisu iznimke 'kraj programa' budući da vrijednost '6' nije bila na deklariranom popisu, što rezultira izlazom 'indeks popisa izvan raspona'.



Primjer 2: Ispis Stacktracea u Pythonu korištenjem metode Logging.Exception()

U ovom primjeru pokazat ćemo kako koristiti Pythonovu metodu 'logging.exception()' za izlaz stacktrace-a. Paket za bilježenje u Pythonu omogućuje nam bilježenje pogrešaka kao i bilježenje pogrešaka i iznimaka. Moduli za bilježenje daju nam izbor modula za bilježenje uključujući 'debug', 'info', 'warning', 'error' i 'critical'. To su u biti slojevi modula zapisivanja, pojednostavljeno rečeno. Da biste zabilježili iznimku s pogreškom u Pythonu, koristite funkciju “logging.exception()”. Ova funkcija dodaje izvješće sa statusom GREŠKA u ovaj zapisnik. Vjeruje se da su parametri za otklanjanje pogrešaka. Podaci o iznimci priloženi su izvješću o evidentiranju. Jedino mjesto s kojeg se može pozvati ovaj postupak trebaju biti rukovatelji iznimkama.

Sada, pogledajmo kôd. Prvo, uvozimo dvije biblioteke – prva je evidencija, a druga traceback. Zatim koristimo metodu “basicConfig” s “logging” i specificiramo razinu kao “logging.Debug”. Jedini argument koji metoda “getLogger()” uzima je “name”. Stoga ga koristimo kada koristimo funkciju “logging.getlogger”. Ako je dano ime, generira se referenca na instancu zapisivača s tim imenom; inače se vraća korijen. Isti objekt zapisivača referenciran je od strane mnogih getLogger() operacija s istim identitetom.

Zatim koristimo pokušaj, i kao što znamo u bloku pokušaja, pišemo kod koji bi mogao izazvati iznimku. U ovom slučaju koristimo 'myfunction()'. Ako se zadana situacija ne podudara, dolazi do iznimke. Zatim kod odmah prelazi na blok osim. U ovom blogu o iznimkama koristimo 'logging.info'. Unutar njega napišemo poruku koju želimo ispisati, a to je „došlo je do iznimke“. To je zato što ako se dogodi iznimka, jednostavno se pojavi pogreška, a zatim prikaže ovu poruku na zaslonu. Ali ako se pogreška ne dogodi, ignorira se cijela poruka o iznimci.

Također smo postavili 'exc info=True' s porukom. Cijeli stacktrace bit će uključen u zapisivanje kada je exc informacija postavljena na True, slično onome što se događa s “logger.exception()”. Jedina je razlika u tome što možete brzo prebaciti razinu zapisnika s pogreške na nešto drugo jednostavnim mijenjanjem zapisivača.

Sada kada je došlo do iznimke u skripti, prvi redak izlaza je poruka 'došlo je do iznimke' nakon koje slijedi razina zapisivanja koja je korištena u skripti, a to je 'info'. Ime zapisivača pojavljuje se kao korijen u ovom slučaju. Zatim se pojavljuje traceback poziv, prikazujući nazive modula, linija i datoteka. Konačno, poruka o pogrešci 'moja funkcija' nije definirana.

Razgovarajmo o još nekim kodovima koji koriste zapisivanje. Exception() metoda počinje uvozom biblioteke za zapisivanje. Zatim se dvije varijable – “m” i “n” – inicijaliziraju i daju im se vrijednosti “7” odnosno “0”. Blok pokušaja sada se koristi u sljedećem koraku. Unutar njega pišemo kod koji bi mogao izazvati iznimku. Prvo, deklariramo varijablu 'o'. Zatim smo postavili to 'm' podijeljeno s 'n'. To uzrokuje iznimku jer je nazivnik nula i nijedan broj ne možemo podijeliti s nulom, što znači da će se pojaviti pogreške. Kao rezultat toga, kôd prelazi na blok osim gdje se koristi 'logging.error'. Greška je razina zapisivanja. Ako se dogodi iznimka, ispisujemo poruku ili izjavu koja kaže 'došlo je do iznimke' i postavljamo 'exc info=true'. Ako ga ne postavimo na istinito, ispisuje se samo blok iznimke i ne prikazuju se povratne informacije.

Budući da smo odabrali razinu 'GREŠKA' u našoj skripti, ona prvo prikazuje korijen kao ime zapisivača, nakon čega slijedi poruka 'dogodila se iznimka'. Zatim se prikazuju povratne informacije koje uključuju naziv datoteke, broj retka i modul. Sljedeći red zatim prikazuje obavijest o pogrešci budući da nazivnik ne može biti nula. Budući da je nazivnik nula u ovom kodu, pogreška se naziva pogreška djelitelja nule.

Zaključak

U ovom smo članku pregledali proces ispisa praćenja niza u Python zapisniku, kao i kako koristiti modul praćenja za stvaranje praćenja niza. U prvom primjeru, traceback biblioteka je uvezena i korištene su metode pokušaj i osim. Kod je bio napisan u polju za pokušaj. Ako se dogodi iznimka, brzo prelazi na blok iznimke i prikazuje izjavu o iznimci na zaslonu. U drugom primjeru upotrijebili smo zapis što je slično prvom primjeru. Metoda exception() koristi razine zapisivanja 'info' i 'error'. Ako se dogodi iznimka, prikazuje izjavu o iznimci.