Imprimați Stacktrace în Pyhton Log

Imprimati Stacktrace In Pyhton Log



O colecție de apeluri de abordare la un anumit moment este reprezentată într-un stacktrace. Când un program generează o excepție, Python generează un stacktrace, cunoscut și sub numele de traceback sau backtrace. Există o varietate de detalii în acest stacktrace care pot fi exploatate pentru a localiza problema. Pachetul de logare Python vine cu mai multe caracteristici fundamentale și are mai multe niveluri de înregistrare, inclusiv „depanare”, „informații”, „avertizare”, „eroare” și „critic”.

Exemplul 1: Imprimați Stacktrace în Python utilizând modulul Traceback

În acest exemplu, vom folosi o bucată simplă de cod pentru a demonstra cum să implementăm modulul de urmărire al Python pentru a imprima urmărirea stivei. Acest pachet trackback include o caracteristică foarte apreciată pentru colectarea, stocarea și afișarea urmelor stivei din limbaje informatice. Duplică cu fidelitate operațiunile de imprimare a urmei stivei unui script. Dacă trebuie vreodată să vizualizați traseul stivei, este esențial.

Cu alte cuvinte, o urmărire a stivei afișează fiecare operație care a venit înaintea celei care a dus la problemă. Cele mai importante informații sunt raportate întotdeauna pe ultima linie a unui traseu de stivă, care este momentul în care este identificat defecțiunea. Toate apelurile de funcții din eroarea rezultată pot fi folosite pentru a localiza și rezolva rapid problema.







Să începem prin a implementa codul prin importul bibliotecii Python de urmărire. Apoi, în linia următoare, creăm o matrice și listăm elementele cu unele valori. Valorile listei de matrice sunt „7”, „8”, „9”, și „10”. Există patru valori în lista de matrice. Această listă de matrice a fost salvată în variabila „A” inițializată anterior.



În continuare, folosim termenul „încercați” și valoarea „A=6” în rândul următor. Utilizăm blocurile try-except din Python pentru a gestiona excepțiile. Această abordare este folosită pentru a scrie scriptul care ar putea genera o eroare în antetul blocului. Excepțiile sunt în esență erori, similare erorilor de sintaxă. În timpul unei excepții a unui program, gestionarea excepțiilor este actul unic de a răspunde la excepție. Revenind la script, folosim „cu excepția” în rândul următor.



În blocul except, folosim „traceback.print exc()”, care este prescurtare pentru „printing exception”. Folosim funcția „print()” în interiorul casetei de excepție, care este „sfârșitul programului”, astfel încât această declarație să fie tipărită atunci când apare excepția. Acum, dacă apare o excepție în caseta de încercare, programul se mută imediat la blocurile except și continuă. Dacă nu apare o excepție, blocul de excepții este omis complet. Acum că se întâmplă excepția, putem vedea în cod că valoarea „6” a fost introdusă în caseta de încercare, chiar dacă nu se află în lista de matrice. Drept urmare, codul ajunge imediat la caseta de excepții și tipărește declarația „program ends” în afișajul de ieșire.





Diferitele apeluri de funcții care alcătuiesc traceback-ul sunt ordonate de la cel mai recent la cel mai puțin recent, de jos în sus. Toate aceste operațiuni sunt reprezentate prin instrucțiuni pe două rânduri. Fiecare apel începe cu numele fișierului, numărul de secvență și numele modulului, toate indicând locația codului. După aceea, afișează declarația de tipărire excepție „sfârșitul programului”, deoarece valoarea „6” nu a fost în lista declarată, ceea ce are ca rezultat rezultatul „indice de listă în afara intervalului”.



Exemplul 2: Imprimați Stacktrace în Python utilizând metoda Logging.Exception()

În acest exemplu, vom demonstra cum să folosiți metoda „logging.exception()” a lui Python pentru a scoate un stacktrace. Pachetul de logare din Python ne permite să înregistrăm erorile, precum și să înregistrăm erorile și excepțiile. Modulele de înregistrare ne oferă o selecție de module de înregistrare, inclusiv „depanare”, „informații”, „avertisment”, „eroare” și „critice”. Acestea sunt în esență straturi de module de jurnal, pentru a spune simplu. Pentru a înregistra o excepție cu o eroare în Python, utilizați funcția „logging.exception()”. Această funcție adaugă un raport cu starea EROARE la acest logger. Se crede că parametrii sunt pentru depanare. Informațiile despre excepție sunt atașate raportului de înregistrare. Singura locație din care să invocați această procedură ar trebui să fie gestionatorii de excepții.

Acum, să ne uităm la cod. În primul rând, importăm două biblioteci – prima dintre ele este înregistrarea în jurnal și a doua este urmărirea. Apoi, folosim metoda „basicConfig” cu „logging” și specificăm nivelul ca „logging.Debug”. Singurul argument pe care îl ia metoda „getLogger()” este „nume”. Astfel, îl folosim atunci când folosim funcția „logging.getlogger”. Dacă este dat un nume, este generată o referință la o instanță de înregistrare cu acel nume; în caz contrar, rădăcina este returnată. Același obiect logger este referit de multe operațiuni getLogger() cu aceeași identitate.

Apoi, folosim pentru a încerca și, după cum știm în blocul de încercare, scriem codul care ar putea ridica o excepție. În acest caz, folosim „funcția mea()”. Dacă situația dată nu se potrivește, apare o excepție. Apoi, codul sare imediat la blocul except. În acest blog de excepție, folosim „logging.info”. În interiorul acestuia, scriem mesajul pe care vrem să-l imprimăm, care este „excepție a avut loc”. Acest lucru se datorează faptului că, dacă apare o excepție, apare pur și simplu o eroare, apoi afișează acest mesaj pe ecran. Dar dacă eroarea nu apare, ignoră întregul mesaj de excepție.

De asemenea, setăm „exc info=True” cu mesajul. Întregul stacktrace va fi inclus în înregistrare atunci când informațiile exc sunt setate la True, similar cu ceea ce se întâmplă cu „logger.exception()”. Singura distincție este că puteți comuta rapid nivelul de jurnal de la eroare la altceva prin simpla schimbare a loggerului.

Acum că a apărut o excepție în script, prima linie de ieșire este mesajul „a avut loc o excepție” urmat de nivelul de înregistrare care a fost folosit în script, care este „informații”. Numele loggerului apare ca rădăcină în acest caz. Apoi, apare apelul de urmărire, afișând numele modulelor, liniilor și fișierelor. În cele din urmă, mesajul de eroare „funcția mea” nu este definit.

Să vorbim despre ceva mai mult cod care folosește jurnalul. Metoda exception() începe prin importarea bibliotecii pentru înregistrare. În continuare, două variabile – „m” și „n” – sunt inițializate și li se primesc valorile „7” și respectiv „0”. Blocul try este acum utilizat în pasul următor. În el, scriem codul care ar putea provoca o excepție. Mai întâi, declarăm variabila „o”. Apoi, setăm acel „m” împărțit la „n”. Acest lucru provoacă o excepție deoarece numitorul este zero și nu putem împărți niciun număr la zero, ceea ce înseamnă că vor apărea erori. Ca rezultat, codul sare la blocul except în care este folosit „logging.error”. Eroare este nivelul de înregistrare. Dacă apare o excepție, imprimăm un mesaj sau o declarație care spune „excepție a avut loc” și setăm „exc info=true”. Dacă nu îl setăm la adevărat, imprimă doar blocul de excepție și nu afișează informațiile de urmărire.

Deoarece am ales nivelul „EROARE” în ​​scriptul nostru, acesta afișează mai întâi rădăcina ca nume al loggerului, urmat de mesajul „a apărut o excepție”. Sunt afișate apoi informațiile de urmărire care au inclus numele fișierului, numărul liniei și modulul. Următoarea linie arată apoi o notificare de eroare, deoarece numitorul nu poate fi zero. Și deoarece numitorul este zero în acest cod, eroarea este denumită eroare cu divizor zero.

Concluzie

În acest articol, am analizat procesul de tipărire a unui stacktrace într-un jurnal Python, precum și modul de utilizare a modulului de urmărire pentru a crea o stivă. În primul exemplu, biblioteca de urmărire a fost importată și s-au folosit metodele try și except. Codul a fost scris în caseta de încercare. Dacă apare o excepție, acesta trece rapid la blocul de excepții și afișează declarația de excepție pe ecran. În al doilea exemplu, am folosit înregistrarea în jurnal, care este similară cu primul exemplu. Metoda exception() folosește nivelurile de înregistrare „informații” și „eroare”. Dacă apare o excepție, aceasta afișează o declarație de excepție.