Vytiskněte Stacktrace v protokolu Pyhton

Vytisknete Stacktrace V Protokolu Pyhton



Kolekce volání přístupu v konkrétním okamžiku je reprezentována v stacktrace. Když program vyvolá výjimku, Python vygeneruje stacktrace, také známý jako traceback nebo backtrace. V tomto stacktrace je řada podrobností, které lze využít k nalezení problému. Protokolovací balíček Pythonu přichází s několika základními funkcemi a má několik úrovní protokolování včetně „ladění“, „informací“, „varování“, „chyby“ a „kritického“.

Příklad 1: Tisk Stacktrace v Pythonu s využitím modulu Traceback

V tomto příkladu použijeme jednoduchý kus kódu, abychom demonstrovali, jak implementovat modul traceback v Pythonu pro tisk trasování zásobníku. Tento trackback balíček obsahuje oblíbenou funkci pro shromažďování, ukládání a vystavování tras zásobníku z počítačových jazyků. Věrně duplikuje operace tisku trasování zásobníku skriptu. Pokud někdy potřebujete zobrazit trasování zásobníku, je to nezbytné.

Jinými slovy, trasování zásobníku zobrazuje každou operaci, která proběhla před tou, která vedla k problému. Nejdůležitější informace jsou vždy hlášeny na posledním řádku trasování zásobníku, což je okamžik, kdy je identifikována chyba. Všechna volání funkcí ve výsledné chybě lze použít k rychlému nalezení a vyřešení problému.







Začněme implementací kódu prostřednictvím importu traceback knihovny Python. Poté v následujícím řádku vytvoříme pole a vypíšeme prvky s nějakými hodnotami. Hodnoty seznamu pole jsou „7“, „8“, „9“ a „10“. V seznamu polí jsou čtyři hodnoty. Tento seznam polí byl uložen do dříve inicializované proměnné „A“.



Následně v následujícím řádku použijeme výraz „zkusit“ a hodnotu „A=6“. Ke správě výjimek používáme bloky try-except v Pythonu. Tento přístup se používá k napsání skriptu, který by mohl způsobit chybu v záhlaví bloku. Výjimkou jsou v podstatě chyby, podobné syntaktickým chybám. Během výjimky programu je zpracování výjimek jedinečným aktem reakce na výjimku. Vrátíme-li se ke skriptu, v dalším řádku použijeme „kromě“.



V bloku výjimkou používáme „traceback.print exc()“, což je zkratka pro „printing exception“. Používáme funkci „print()“ uvnitř pole výjimky, což je „konec programu“, aby se tento příkaz vytiskl, když nastane výjimka. Nyní, pokud dojde k výjimce v poli try, program se okamžitě přesune na bloky kromě a pokračuje. Pokud k výjimce nedojde, blok výjimky je zcela přeskočen. Nyní, když k výjimce dojde, můžeme v kódu vidět, že do pole try byla zadána hodnota „6“, i když není v seznamu polí. Výsledkem je, že kód okamžitě přejde do pole výjimky a na výstupní obrazovce vytiskne příkaz „program končí“.





Různá volání funkcí, která tvoří zpětné sledování, jsou řazena od nejnovějšího po nejnovější, zdola nahoru. Všechny tyto operace jsou reprezentovány dvouřádkovými příkazy. Každé volání začíná názvem souboru, pořadovým číslem a názvem modulu, přičemž všechny označují umístění kódu. Poté zobrazí výjimku tiskové prohlášení „konec programu“, protože hodnota „6“ nebyla v deklarovaném seznamu, což vede k výstupu „index seznamu mimo rozsah“.



Příklad 2: Tisk Stacktrace v Pythonu pomocí metody Logging.Exception().

V tomto příkladu si ukážeme, jak použít metodu „logging.exception()“ Pythonu k výstupu stacktrace. Protokolovací balíček v Pythonu nám umožňuje zaznamenat chyby a také zaznamenat chyby a výjimky. Protokolovací moduly nám poskytují výběr protokolovacích modulů včetně „ladění“, „informací“, „varování“, „chyby“ a „kritického“. To jsou v podstatě vrstvy logovacích modulů, zjednodušeně řečeno. Chcete-li zaprotokolovat výjimku s chybou v Pythonu, použijte funkci „logging.exception()“. Tato funkce přidá do tohoto záznamníku zprávu se stavem ERROR. Předpokládá se, že parametry jsou pro ladění. Informace o výjimce je připojena k protokolu protokolování. Jediným umístěním, ze kterého lze tento postup vyvolat, by měly být obslužné rutiny výjimek.

Nyní se podívejme na kód. Nejprve importujeme dvě knihovny – první z nich je logovací a druhá je traceback. Poté použijeme metodu „basicConfig“ s „loggingem“ a specifikujeme úroveň jako „logging.Debug“. Jediný argument, který metoda „getLogger()“ používá, je „name“. Používáme jej tedy při použití funkce „logging.getlogger“. Pokud je zadán název, vygeneruje se odkaz na instanci loggeru s tímto názvem; jinak je vrácen kořen. Na stejný objekt loggeru odkazuje mnoho operací getLogger() se stejnou identitou.

Potom použijeme to try, a jak víme v bloku try, napíšeme kód, který by mohl vyvolat výjimku. V tomto případě použijeme „myfunction()“. Pokud daná situace neodpovídá, dojde k výjimce. Poté kód okamžitě přeskočí na blok kromě. V tomto blogu výjimek používáme „logging.info“. Uvnitř napíšeme zprávu, kterou chceme vytisknout, což je „proběhla výjimka“. Je to proto, že pokud dojde k výjimce, jednoduše dojde k chybě a poté se na obrazovce zobrazí tato zpráva. Ale pokud k chybě nedojde, ignoruje celou zprávu o výjimce.

U zprávy jsme také nastavili „exc info=True“. Celý stacktrace bude zahrnut do protokolování, když je exc info nastaveno na True, podobně jako u „logger.exception()“. Jediný rozdíl je v tom, že můžete rychle přepnout úroveň protokolu z chyby na něco jiného pouhým odložením zapisovače.

Nyní, když ve skriptu došlo k výjimce, je na prvním řádku výstupu zpráva „proběhla výjimka“ následovaná úrovní protokolování, která byla použita ve skriptu, což je „informace“. Jméno loggeru se v tomto případě objeví jako kořen. Poté se zobrazí volání traceback, které zobrazí názvy modulů, řádků a souborů. Chybová zpráva „myfunction“ nakonec není definována.

Promluvme si o nějakém dalším kódu, který využívá protokolování. Metoda exception() začíná importem knihovny pro protokolování. Dále jsou inicializovány dvě proměnné – „m“ a „n“ – a jsou jim přiřazeny hodnoty „7“ a „0“. Blok try se nyní použije v následujícím kroku. V rámci něj napíšeme kód, který by mohl způsobit výjimku. Nejprve deklarujeme proměnnou „o“. Potom nastavíme to „m“ děleno „n“. To způsobí výjimku, protože jmenovatel je nula a žádné číslo nemůžeme dělit nulou, což znamená, že dojde k chybám. V důsledku toho kód skočí do bloku výjimkou, kde se používá „logging.error“. Chyba je úroveň protokolování. Pokud dojde k výjimce, vytiskneme zprávu nebo prohlášení, které říká „došlo k výjimce“, a nastavíme „exc info=true“. Pokud jej nenastavíme na hodnotu true, vytiskne pouze blok výjimky a nezobrazuje informace o sledování.

Protože jsme v našem skriptu zvolili úroveň „CHYBA“, nejprve zobrazí kořenový adresář jako název loggeru a poté zprávu „došlo k výjimce“. Poté se zobrazí informace o zpětném sledování, které zahrnovaly název souboru, číslo řádku a modul. Na dalším řádku se pak zobrazí chybové hlášení, protože jmenovatel nemůže být nula. A protože jmenovatel je v tomto kódu nula, chyba se označuje jako chyba nulového děliče.

Závěr

V tomto článku jsme se podívali na proces tisku trasování zásobníku v protokolu Pythonu a také na to, jak použít modul traceback k vytvoření trasování zásobníku. V prvním příkladu byla importována knihovna traceback a byly použity metody try a kromě. Kód byl napsán v poli try. Pokud dojde k výjimce, rychle přeskočí do bloku výjimky a zobrazí příkaz výjimky na obrazovce. Ve druhém příkladu jsme použili protokolování, které je podobné prvnímu příkladu. Metoda výjimka() používá úrovně protokolování „info“ a „chyba“. Pokud dojde k výjimce, zobrazí se prohlášení o výjimce.