Print StackTrace i Pyhton Log

Print StackTrace i Pyhton Log
En samling av tilnærmingsanrop i et bestemt øyeblikk 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 å finne problemet. Python -loggingspakken har flere grunnleggende funksjoner og har flere nivåer av logging inkludert "Debug", "Info", "ADVARSEL", "FEIL" og "Kritisk".

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

I dette eksemplet bruker vi et enkelt stykke kode for å demonstrere hvordan du implementerer Pythons TraceBack -modul for å skrive ut stack Trace. Denne trackback-pakken inneholder en godt likt funksjon for innsamling, lagring og utstillingsspor fra dataspråk. Det dupliserer trofast et skripts stack Trace Printing Operations. Hvis du noen gang trenger å se Stack Trace, er det viktig.

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

La oss starte med å implementere koden gjennom å importere Traceback Python -biblioteket. Deretter oppretter vi på følgende linje en matrise og viser elementene med noen verdier. Array -listenes verdier er “7”, “8”, “9” og “10”. Det er fire verdier i matriselisten. Denne array -listen ble lagret i den tidligere initialiserte variabelen “A”.

Etter det bruker vi begrepet “prøve” og verdien “A = 6” på følgende linje. Vi bruker Try-Procept-blokker i Python for å administrere unntakene. Denne tilnærmingen brukes til å skrive skriptet som kan øke en feil i blokkoverskriften. Unntak er i hovedsak feil, ligner på syntaksfeil. Under et unntak av et program er unntakshåndtering den unike handlingen for å svare på unntaket. Når vi kommer tilbake til manuset, bruker vi “Bortsett fra” i neste linje.

I unntatt blokken bruker vi “Traceback.print exc () ”som er forkortelse for" utskrifts unntak ". Vi bruker "print ()" -funksjonen i unntaksboksen som er "programlutt" slik at denne uttalelsen skriver ut når unntaket oppstår. Nå, hvis et unntak oppstår i Try Box, beveger programmet seg umiddelbart til unntatt blokker og fortsetter. Hvis et unntak ikke oppstår, hoppes unntaksblokken. Nå som unntaket skjer, kan vi se i koden at verdien “6” ble lagt inn i prøveboksen, selv om den ikke er i matriselisten. Som et resultat går koden umiddelbart til unntaksboksen og skriver ut “programmet” -uttalelsen i Output Display.

De forskjellige funksjonsanropene som utgjør sporbacken er bestilt fra den siste til minst nylig, fra bunnen til toppen. Disse operasjonene er alle representert med to-linjers uttalelser. Hver samtale begynner med filnavnet, sekvensnummeret og modulnavnet, som alle indikerer plasseringen av koden. Etter det viser den unntaksutskriften “Program End” siden verdien “6” ikke var i den deklarerte listen, noe som resulterer i “List Index Out of Range” -utgangen.

Eksempel 2: Skriv ut StackTrace i Python ved å bruke loggingen.Unntak () Metode

I dette eksemplet vil vi demonstrere hvordan du bruker Pythons “Logging.Unntak () ”-metode for å sende ut en stackTrace. Loggingspakken i Python lar oss logge feilene, samt registrere feil og unntak. Loggingsmoduler gir oss et utvalg av loggingsmoduler inkludert "Debug", "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.Unntak () ”-funksjon. Denne funksjonen legger til en rapport med feilstatusen til denne loggeren. Det antas at parametrene er for feilsøking. Informasjonen om unntaket er knyttet til loggrapporten. Det eneste stedet å påkalle denne prosedyren skal være unntakshåndterere.

La oss nå se på koden. Først importerer vi to biblioteker - hvorav den første er logging og den andre er Traceback. Deretter bruker vi “BasicConfig” -metoden med “Logging” og spesifiserer nivået som “Logging.Feilsøking ”. Det eneste argumentet som "getLogger ()" -metoden tar er "Navn". Dermed bruker vi den når vi bruker “Logging.getlogger ”-funksjon. 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 pleier vi å prøve, og som vi vet i prøveblokken, skriver vi koden som kan øke et unntak. I dette tilfellet bruker vi "MyFunction ()". Hvis den gitte situasjonen ikke stemmer overens, oppstår et unntak. Deretter hopper koden umiddelbart til unntatt blokken. I denne unntaksbloggen bruker vi “Logging.info ”. Inne i det skriver vi meldingen om at vi ønsker å skrive ut som "unntak fant sted". Dette er fordi hvis et unntak skjer, oppstår en feil ganske enkelt, 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 -informasjonen er satt til True, lik det som skjer med “Logger.unntak()". Det eneste skillet er at du raskt kan bytte loggnivå fra feil til noe annet ved bare å bytte ut loggeren.

Nå som et unntak oppstod i skriptet, er den første utdatellinjen "unntaket som skjedde" -meldingen etterfulgt av loggingsnivået som ble brukt i skriptet som er "Info.”Loggerens navn vises som roten i dette tilfellet. Deretter dukker Traceback -samtalen opp, viser modul-, linjen og filnavnene. Endelig er ikke feilmeldingen “MyFunction” ikke definert.

La oss snakke om litt mer kode som benytter seg av logging. Unntaket () -metoden begynner med å importere biblioteket for logging. Deretter blir to variabler - “M” og “N” - initialisert og gitt verdiene til henholdsvis "7" og "0". Try -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 satte vi at "m" delt med "n". Dette forårsaker et unntak fordi nevneren er null og vi ikke kan dele noe tall med null, noe som betyr at feilene vil oppstå. Som et resultat hopper koden til den unntatt blokken der "logging.Feil ”brukes. Feil er nivået på logging. Hvis det oppstår et unntak, skriver vi ut en melding eller uttalelse som sier: "Unntak oppstod" og vi angir "EXC Info = SANN". Hvis vi ikke setter den til True, 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 "unntaket oppstod" -meldingen. Traceback -informasjonen som inkluderte filnavnet, linjenummeret og modulen vises deretter. Neste linje viser deretter en feilvarsel siden nevneren ikke kan være null. Og siden nevneren er null i denne koden, blir feilen referert til som en feil med null-divisor.

Konklusjon

I denne artikkelen så vi over prosessen med å skrive ut en StackTrace i en Python -logg, samt hvordan du bruker TraceBack -modulen for å lage et stack Trace. I det første eksemplet ble Traceback -biblioteket importert og forsøket og unntatt metoder ble brukt. Koden ble skrevet i prøveboksen. Hvis et unntak oppstår, hopper det raskt til unntaksblokken og viser unntakserklæringen på skjermen. I det andre eksemplet benyttet vi loggingen som ligner på det første eksemplet. Unntaket () -metoden bruker “Info” og “Feil” -nivåer for logging. Hvis et unntak inntreffer, viser det en unntakserklæring.