Skriv ut Stacktrace i Pyhton Log

Skriv Ut Stacktrace I Pyhton Log



En samling tillvägagångssamtal vid ett visst ögonblick representeras i en stacktrace. När ett program tar upp ett undantag, genererar Python en stacktrace, även känd som en traceback eller backtrace. Det finns en mängd detaljer i denna stacktrace som kan utnyttjas för att lokalisera problemet. Python-loggningspaketet kommer med flera grundläggande funktioner och har flera nivåer av loggning inklusive 'debug', 'info', 'varning', 'fel' och 'kritisk'.

Exempel 1: Skriv ut Stacktrace i Python genom att använda spårningsmodulen

I det här exemplet kommer vi att använda en enkel kodbit för att demonstrera hur man implementerar Pythons spårningsmodul för att skriva ut stackspårningen. Detta trackback-paket innehåller en omtyckt funktion för att samla in, lagra och visa stackspår från datorspråk. Det duplicerar troget ett skripts stack trace-utskriftsoperationer. Om du någonsin behöver se stackspåret är det viktigt.

Med andra ord, en stackspårning visar varje operation som kom före den som resulterade i problemet. Den viktigaste informationen rapporteras alltid på den sista raden i en stackspårning, vilket är när felet identifieras. Alla funktionsanrop i det resulterande felet kan användas för att snabbt lokalisera och lösa problemet.







Låt oss börja med att implementera koden genom att importera Python-biblioteket för spårning. Sedan, på följande rad, skapar vi en array och listar elementen med några värden. Matrislistans värden är '7', '8', '9' och '10'. Det finns fyra värden i arraylistan. Denna arraylista sparades i den tidigare initierade variabeln 'A'.



Efter det använder vi termen 'försök' och värdet 'A=6' på följande rad. Vi använder try-except-blocken i Python för att hantera undantagen. Det här tillvägagångssättet används för att skriva skriptet som kan skapa ett fel i blockhuvudet. Undantag är i huvudsak fel, liknande syntaxfel. Under ett undantag av ett program är undantagshantering den unika handlingen att svara på undantaget. För att återgå till skriptet använder vi 'except' på nästa rad.



I except-blocket använder vi 'traceback.print exc()' som är en förkortning för 'printing exception'. Vi använder funktionen 'print()' inuti undantagsrutan som är 'programslut' så att denna sats skrivs ut när undantaget uppstår. Nu, om ett undantag inträffar i försöksrutan, flyttar programmet omedelbart till undantagsblocken och fortsätter. Om ett undantag inte inträffar, hoppas undantagsblocket över helt. Nu när undantaget inträffar kan vi se i koden att värdet '6' skrevs in i försöksrutan även om det inte finns i arraylistan. Som ett resultat går koden omedelbart till undantagsrutan och skriver ut satsen 'program sluts' i utdatadisplayen.





De olika funktionsanropen som utgör spårningen är ordnade från det senaste till det minst senaste, från botten till toppen. Dessa operationer representeras alla av tvåradiga uttalanden. Varje samtal börjar med filnamn, sekvensnummer och modulnamn, som alla anger kodens plats. Efter det visar den undantagsutskriften 'program slut' eftersom värdet '6' inte fanns i den deklarerade listan, vilket resulterar i 'listindex utanför intervallet'.



Exempel 2: Skriv ut Stacktrace i Python genom att använda metoden Logging.Exception()

I det här exemplet kommer vi att visa hur man använder Pythons 'logging.exception()'-metod för att mata ut en stacktrace. Loggningspaketet i Python låter oss logga felen samt registrera felen och undantagen. Loggningsmoduler ger oss ett urval av loggningsmoduler inklusive 'debug', 'info', 'varning', 'fel' och 'kritisk'. Dessa är i huvudsak lager av loggningsmoduler, för att uttrycka det enkelt. För att logga ett undantag med ett fel i Python, använd funktionen 'logging.exception()'. Denna funktion lägger till en rapport med ERROR-status till denna logger. Man tror att parametrarna är för felsökning. Informationen om undantaget bifogas logningsrapporten. Den enda platsen från vilken denna procedur kan anropas bör vara undantagshanterarna.

Låt oss nu titta på koden. Först importerar vi två bibliotek – det första är loggning och det andra är spårning. Sedan använder vi metoden 'basicConfig' med 'loggning' och anger nivån som 'logging.Debug'. Det enda argumentet som 'getLogger()'-metoden tar är 'name'. Därför använder vi det när vi använder funktionen 'logging.getlogger'. Om ett namn ges genereras en referens till en loggerinstans med det namnet; annars returneras roten. Samma loggerobjekt refereras av många getLogger()-operationer med samma identitet.

Sedan brukar vi försöka, och som vi vet i försöksblocket skriver vi koden som kan ge upphov till ett undantag. I det här fallet använder vi 'myfunction()'. Om den givna situationen inte stämmer överens uppstår ett undantag. Sedan hoppar koden omedelbart till undantagsblocket. I den här undantagsbloggen använder vi 'logging.info'. Inuti den skriver vi meddelandet som vi vill skriva ut vilket är 'undantag ägde rum'. Detta beror på att om ett undantag inträffar, uppstår ett fel helt enkelt och det visar detta meddelande på skärmen. Men om felet inte uppstår ignoreras hela undantagsmeddelandet.

Vi ställer också in 'exc info=True' med meddelandet. Hela stacktrace kommer att inkluderas i loggningen när exc info är satt till True, liknande vad som händer med 'logger.exception()'. Den enda skillnaden är att du snabbt kan byta loggnivå från fel till något annat genom att bara byta ut loggaren.

Nu när ett undantag inträffade i skriptet är den första utdataraden meddelandet 'undantag ägde rum' följt av loggningsnivån som användes i skriptet, som är 'info.' Loggarens namn visas som roten i det här fallet. Sedan dyker spårningsanropet upp och visar modul-, linje- och filnamn. Slutligen är felmeddelandet 'min funktion' inte definierat.

Låt oss prata om lite mer kod som använder loggning. Metoden exception() börjar med att importera biblioteket för loggning. Därefter initieras två variabler - 'm' och 'n' - och får värdena '7' respektive '0'. Försöksblocket används nu i det efterföljande steget. Inom den skriver vi koden som kan orsaka ett undantag. Först deklarerar vi variabeln 'o'. Sedan sätter vi 'm' dividerat med 'n'. Detta orsakar ett undantag eftersom nämnaren är noll och vi kan inte dividera något tal med noll, vilket gör att felen kommer att uppstå. Som ett resultat hoppar koden till undantagsblocket där 'logging.error' används. Fel är nivån på loggning. Om ett undantag inträffar skriver vi ut ett meddelande eller uttalande som säger 'undantag inträffade' och vi ställer in 'exc info=true'. Om vi ​​inte ställer in det till sant, skriver den bara ut undantagsblocket och visar inte spårningsinformationen.

Eftersom vi valde 'ERROR'-nivån i vårt skript, visar det först roten som namnet på loggern, följt av meddelandet 'undantag inträffade'. Spårningsinformationen som inkluderade filnamn, radnummer och modul visas sedan. Nästa rad visar då ett felmeddelande eftersom nämnaren inte kan vara noll. Och eftersom nämnaren är noll i den här koden kallas felet för ett nolldelarfel.

Slutsats

I den här artikeln tittade vi på processen att skriva ut en stacktrace i en Python-logg samt hur man använder spårningsmodulen för att skapa en stackspårning. I det första exemplet importerades spårningsbiblioteket och metoderna försök och undantag användes. Koden skrevs i försöksrutan. Om ett undantag inträffar, hoppar det snabbt till undantagsblocket och visar undantagssatsen på skärmen. I det andra exemplet använde vi loggningen som liknar det första exemplet. Metoden exception() använder nivåerna 'info' och 'fel' för loggning. Om ett undantag inträffar, visar det en undantagssats.