Skriv ut Stacktrace i Pyhton Log

Skriv Ut Stacktrace I Pyhton Log



En samling tilnærmingsanrop på et bestemt tidspunkt er representert i en stacktrace. Når et program reiser et unntak, genererer Python en stacktrace, også kjent som en traceback eller backtrace. Det er en rekke detaljer i denne stacktrace som kan utnyttes for å lokalisere problemet. Python-loggingspakken kommer med flere grunnleggende funksjoner og har flere nivåer av logging, inkludert 'feilsøking', 'info', 'advarsel', 'feil' og 'kritisk'.

Eksempel 1: Skriv ut Stacktrace i Python ved å bruke Traceback-modulen

I dette eksemplet vil vi bruke et enkelt stykke kode for å demonstrere hvordan du implementerer Pythons sporingsmodul for å skrive ut stabelsporet. Denne trackback-pakken inkluderer en godt likt funksjon for å samle inn, lagre og vise stabelsporene fra dataspråk. Den dupliserer trofast et skripts stabelsporingsutskriftsoperasjoner. Hvis du noen gang trenger å se stabelsporet, er det viktig.

Med andre ord, en stabelsporing viser hver operasjon som kom før den som resulterte i problemet. Den viktigste informasjonen rapporteres alltid på den siste linjen i en stabelsporing, som er når feilen identifiseres. Alle funksjonskallene i den resulterende feilen kan brukes til raskt å finne og løse problemet.







La oss starte med å implementere koden ved å importere Python-biblioteket for tilbakesporing. Så, i den følgende linjen, lager vi en matrise og viser elementene med noen verdier. Matriselistens verdier er '7', '8', '9' og '10'. Det er fire verdier i matriselisten. Denne matriselisten ble lagret i den tidligere initialiserte variabelen 'A'.



Etter det bruker vi begrepet 'try' og verdien 'A=6' i den følgende linjen. Vi bruker prøve-unntatt-blokkene i Python for å administrere unntakene. Denne tilnærmingen brukes til å skrive skriptet som kan føre til en feil i blokkhodet. Unntak er i hovedsak feil, lik syntaksfeil. Under et unntak av et program er unntakshåndtering den unike handlingen å svare på unntaket. For å gå tilbake til skriptet bruker vi 'unntatt' i neste linje.



I unntaksblokken bruker vi 'traceback.print exc()' som er forkortelse for 'utskriftsunntak'. Vi bruker 'print()'-funksjonen inne i unntaksboksen som er 'programslutt', slik at denne setningen skrives ut når unntaket oppstår. Nå, hvis et unntak oppstår i prøveboksen, flytter programmet umiddelbart til unntaksblokkene og fortsetter. Hvis et unntak ikke forekommer, hoppes unntaksblokken fullstendig over. Nå som unntaket skjer, kan vi se i koden at verdien «6» ble angitt i prøveboksen, selv om den ikke er i matriselisten. Som et resultat går koden umiddelbart til unntaksboksen og skriver ut 'programslutt'-setningen i utdataskjermen.





De ulike funksjonsanropene som utgjør sporingen er sortert fra den nyeste til den minst nylige, fra bunnen til toppen. Disse operasjonene er alle representert av to-linjers uttalelser. Hvert anrop begynner med filnavnet, sekvensnummeret og modulnavnet, som alle indikerer plasseringen av koden. Etter det viser den unntaksutskriften «programslutt» siden verdien «6» ikke var i den deklarerte listen, noe som resulterer i «listeindeks utenfor rekkevidde»-utdata.



Eksempel 2: Skriv ut Stacktrace i Python ved å bruke Logging.Exception()-metoden

I dette eksemplet vil vi demonstrere hvordan du bruker Pythons 'logging.exception()'-metode for å sende ut en stacktrace. Loggpakken i Python lar oss logge feilene samt registrere feilene og unntakene. Loggmoduler gir oss et utvalg av loggingsmoduler, inkludert 'feilsøking', 'info', 'advarsel', 'feil' og 'kritisk'. Dette er i hovedsak lag med loggingsmoduler, for å si det enkelt. For å logge et unntak med en feil i Python, bruk «logging.exception()»-funksjonen. Denne funksjonen legger til en rapport med ERROR-status til denne loggeren. Det antas at parametrene er for feilsøking. Informasjonen om unntaket er vedlagt loggrapporten. Det eneste stedet å påkalle denne prosedyren bør være unntaksbehandlerne.

La oss nå se på koden. Først importerer vi to biblioteker – det første er logging og det andre er sporing. Deretter bruker vi 'basicConfig'-metoden med 'logging' og spesifiserer nivået som 'logging.Debug'. Det eneste argumentet som 'getLogger()'-metoden tar er 'navn'. Derfor bruker vi den når vi bruker «logging.getlogger»-funksjonen. Hvis et navn er gitt, genereres en referanse til en loggerforekomst med det navnet; ellers returneres roten. Det samme loggerobjektet refereres til av mange getLogger()-operasjoner med samme identitet.

Deretter bruker vi å prøve, og som vi vet i prøveblokken, skriver vi koden som kan føre til et unntak. I dette tilfellet bruker vi 'myfunction()'. Hvis den gitte situasjonen ikke stemmer overens, oppstår et unntak. Deretter hopper koden umiddelbart til unntaksblokken. I denne unntaksbloggen bruker vi «logging.info». Inne i den skriver vi meldingen vi ønsker å skrive ut som er 'unntak fant sted'. Dette er fordi hvis et unntak skjer, oppstår det bare en feil, så viser den denne meldingen på skjermen. Men hvis feilen ikke oppstår, ignorerer den hele unntaksmeldingen.

Vi setter også 'exc info=True' med meldingen. Hele stacktrace vil bli inkludert i loggingen når exc info er satt til True, på samme måte som det som skjer med 'logger.exception()'. Den eneste forskjellen er at du raskt kan bytte loggnivå fra feil til noe annet ved å bare bytte ut loggeren.

Nå som et unntak skjedde i skriptet, er den første utdatalinjen meldingen 'unntak fant sted' etterfulgt av loggingsnivået som ble brukt i skriptet, som er 'info.' Loggerens navn vises som roten i dette tilfellet. Deretter dukker sporingsanropet opp, og viser modul-, linje- og filnavn. Til slutt er feilmeldingen 'min funksjon' ikke definert.

La oss snakke om litt mer kode som gjør bruk av logging. Unntak()-metoden begynner med å importere biblioteket for logging. Deretter initialiseres to variabler - 'm' og 'n' og gis verdiene til henholdsvis '7' og '0'. Prøv-blokken brukes nå i det påfølgende trinnet. Innenfor den skriver vi koden som kan forårsake et unntak. Først erklærer vi variabelen 'o'. Deretter setter vi at 'm' delt på 'n'. Dette forårsaker et unntak fordi nevneren er null og vi kan ikke dele noe tall med null, noe som betyr at feilene vil oppstå. Som et resultat hopper koden til unntatt blokken der 'logging.error' brukes. Feil er nivået på logging. Hvis det oppstår et unntak, skriver vi ut en melding eller uttalelse som sier «unntak skjedde» og vi angir «exc info=true». Hvis vi ikke setter den til sann, skriver den bare ut unntaksblokken og viser ikke sporingsinformasjonen.

Fordi vi valgte 'FEIL'-nivået i skriptet vårt, viser det først roten som navnet på loggeren, etterfulgt av meldingen 'unntak skjedde'. Sporingsinformasjonen som inkluderte filnavnet, linjenummeret og modulen vises deretter. Neste linje viser da en feilmelding siden nevneren ikke kan være null. Og siden nevneren er null i denne koden, blir feilen referert til som en nulldelerfeil.

Konklusjon

I denne artikkelen så vi over prosessen med å skrive ut en stacktrace i en Python-logg, samt hvordan du bruker sporingsmodulen til å lage en stacktrace. I det første eksemplet ble sporingsbiblioteket importert og forsøk og unntatt metodene ble brukt. Koden ble skrevet i prøveboksen. Hvis et unntak oppstår, hopper det raskt til unntaksblokken og viser unntakssetningen på skjermen. I det andre eksemplet brukte vi loggingen som ligner på det første eksemplet. Unntak()-metoden bruker 'info'- og 'feil'-nivåene for logging. Hvis et unntak oppstår, viser det en unntakssetning.