Druk Stacktrace af in Pyhton Log

Druk Stacktrace Af In Pyhton Log



Een verzameling van approach calls op een bepaald moment wordt weergegeven in een stacktrace. Wanneer een programma een uitzondering genereert, genereert Python een stacktrace, ook wel een traceback of backtrace genoemd. Er is een verscheidenheid aan details in deze stacktrace die kan worden benut om het probleem te lokaliseren. Het logboekregistratiepakket van Python wordt geleverd met verschillende fundamentele functies en heeft meerdere logboekniveaus, waaronder 'debug', 'info', 'waarschuwing', 'fout' en 'kritiek'.

Voorbeeld 1: Stacktrace afdrukken in Python door gebruik te maken van de Traceback-module

In dit voorbeeld gebruiken we een eenvoudig stukje code om te demonstreren hoe de traceback-module van Python moet worden geïmplementeerd om de stacktracering af te drukken. Dit trackback-pakket bevat een populaire functie voor het verzamelen, opslaan en weergeven van de stacktraces van computertalen. Het dupliceert getrouw de stacktrace-afdrukbewerkingen van een script. Als u ooit de stacktracering moet bekijken, is dit essentieel.

Met andere woorden, een stacktracering geeft elke bewerking weer die voorafging aan de bewerking die tot het probleem leidde. De belangrijkste informatie wordt altijd gerapporteerd op de laatste regel van een stacktracering, wanneer de fout wordt geïdentificeerd. Alle functieaanroepen in de resulterende fout kunnen worden gebruikt om het probleem snel te lokaliseren en op te lossen.







Laten we beginnen met het implementeren van de code door de traceback Python-bibliotheek te importeren. Vervolgens maken we in de volgende regel een array en vermelden we de elementen met enkele waarden. De waarden van de arraylijst zijn '7', '8', '9' en '10'. Er zijn vier waarden in de arraylijst. Deze arraylijst is opgeslagen in de eerder geïnitialiseerde variabele 'A'.



Daarna gebruiken we de term 'proberen' en de waarde 'A=6' in de volgende regel. We gebruiken de try-except-blokken in Python om de uitzonderingen te beheren. Deze benadering wordt gebruikt om het script te schrijven dat een fout in de blokkop kan veroorzaken. Uitzonderingen zijn in wezen fouten, vergelijkbaar met syntaxisfouten. Tijdens een uitzondering van een programma is het afhandelen van uitzonderingen de unieke handeling van het reageren op de uitzondering. Terugkerend naar het script, gebruiken we 'behalve' in de volgende regel.



In het exception-blok gebruiken we 'traceback.print exc()', wat een afkorting is voor 'printing exception'. We gebruiken de functie 'print()' in het uitzonderingsvak dat 'programma-einde' is, zodat deze instructie wordt afgedrukt wanneer de uitzondering zich voordoet. Als er nu een uitzondering optreedt in het try-vak, gaat het programma onmiddellijk naar de uitzonderingsblokken en gaat het verder. Als er geen uitzondering optreedt, wordt het uitzonderingsblok volledig overgeslagen. Nu de uitzondering zich voordoet, kunnen we in de code zien dat de waarde '6' is ingevoerd in het vak try, ook al staat deze niet in de arraylijst. Als gevolg hiervan gaat de code onmiddellijk naar het uitzonderingsvak en drukt de instructie 'programma eindigt' af in het uitvoerscherm.





De verschillende functieaanroepen waaruit de traceback bestaat, zijn gerangschikt van de meest recente naar de minst recente, van onder naar boven. Deze bewerkingen worden allemaal weergegeven door verklaringen van twee regels. Elke aanroep begint met de bestandsnaam, het volgnummer en de modulenaam, die allemaal de locatie van de code aangeven. Daarna wordt de exception print-instructie 'program end' weergegeven, aangezien de waarde '6' niet in de gedeclareerde lijst stond, wat resulteert in de uitvoer 'list index out of range'.



Voorbeeld 2: Print Stacktrace in Python door de methode Logging.Exception() te gebruiken

In dit voorbeeld laten we zien hoe u de methode 'logging.exception()' van Python kunt gebruiken om een ​​stacktrace uit te voeren. Met het logboekpakket in Python kunnen we de fouten loggen en de fouten en uitzonderingen vastleggen. Logboekmodules bieden ons een selectie van logboekmodules, waaronder 'debug', 'info', 'waarschuwing', 'fout' en 'kritiek'. Dit zijn in feite lagen van logmodules, om het simpel te zeggen. Gebruik de functie 'logging.exception()' om een ​​uitzondering met een fout in Python te loggen. Deze functie voegt een rapport met de status ERROR toe aan deze logger. Er wordt aangenomen dat de parameters voor foutopsporing zijn. De informatie over de uitzondering wordt bij het logboekrapport gevoegd. De enige locatie van waaruit deze procedure kan worden aangeroepen, zouden de uitzonderingshandlers moeten zijn.

Laten we nu naar de code kijken. Eerst importeren we twee bibliotheken – de eerste is loggen en de tweede is traceback. Vervolgens gebruiken we de methode 'basicConfig' met 'logging' en specificeren we het niveau als 'logging.Debug'. Het enige argument dat de methode 'getLogger()' gebruikt, is 'naam'. We gebruiken het dus bij het gebruik van de functie 'logging.getlogger'. Als er een naam wordt gegeven, wordt er een verwijzing naar een loggerinstantie met die naam gegenereerd; anders wordt de root geretourneerd. Naar hetzelfde logger-object wordt verwezen door veel getLogger()-bewerkingen met dezelfde identiteit.

Vervolgens gebruiken we om te proberen, en zoals we weten in het blok try, schrijven we de code die een uitzondering kan veroorzaken. In dit geval gebruiken we 'mijnfunctie()'. Komt de gegeven situatie niet overeen, dan ontstaat er een uitzondering. Vervolgens springt de code onmiddellijk naar het behalve-blok. In deze uitzonderingsblog gebruiken we 'logging.info'. Daarin schrijven we het bericht dat we willen afdrukken, namelijk 'er vond een uitzondering plaats'. Dit komt omdat als er een uitzondering optreedt, er gewoon een fout optreedt en dit bericht op het scherm wordt weergegeven. Maar als de fout niet optreedt, wordt het hele uitzonderingsbericht genegeerd.

We stellen ook de 'exc info=True' in bij het bericht. De hele stacktrace wordt opgenomen in de logboekregistratie wanneer de exc-info is ingesteld op True, vergelijkbaar met wat er gebeurt met 'logger.exception()'. Het enige verschil is dat u het logniveau snel kunt omschakelen van fout naar iets anders door simpelweg de logger uit te wisselen.

Nu er een uitzondering is opgetreden in het script, is de eerste uitvoerregel het bericht 'Er heeft een uitzondering plaatsgevonden', gevolgd door het logboekniveau dat in het script is gebruikt, namelijk 'info'. De naam van de logger verschijnt in dit geval als root. Vervolgens verschijnt de traceback-oproep, met de module-, lijn- en bestandsnamen. Ten slotte is de foutmelding 'mijnfunctie' niet gedefinieerd.

Laten we het hebben over wat meer code die gebruik maakt van logging. De exception() methode begint met het importeren van de bibliotheek voor logboekregistratie. Vervolgens worden twee variabelen - 'm' en 'n' - geïnitialiseerd en krijgen respectievelijk de waarden '7' en '0'. Het try-blok wordt nu gebruikt in de volgende stap. Daarin schrijven we de code die een uitzondering kan veroorzaken. Eerst verklaren we de variabele 'o'. Vervolgens stellen we die 'm' gedeeld door 'n' in. Dit veroorzaakt een uitzondering omdat de noemer nul is en we geen enkel getal door nul kunnen delen, wat betekent dat de fouten zullen optreden. Als resultaat springt de code naar het behalve-blok waar 'logging.error' wordt gebruikt. Fout is het logniveau. Als er zich een uitzondering voordoet, drukken we een bericht of verklaring af met de tekst 'Er is een uitzondering opgetreden' en stellen we 'exc info=true' in. Als we het niet op waar instellen, wordt alleen het uitzonderingsblok afgedrukt en wordt de traceback-informatie niet weergegeven.

Omdat we het 'ERROR' -niveau in ons script hebben gekozen, wordt eerst de root weergegeven als de naam van de logger, gevolgd door het bericht 'Er is een uitzondering opgetreden'. De traceback-informatie, waaronder de bestandsnaam, het regelnummer en de module, wordt vervolgens weergegeven. De volgende regel toont dan een foutmelding aangezien de noemer niet nul kan zijn. En aangezien de noemer nul is in deze code, wordt de fout een nuldelerfout genoemd.

Conclusie

In dit artikel hebben we gekeken naar het proces van het afdrukken van een stacktrace in een Python-logboek en naar het gebruik van de traceback-module om een ​​stacktrace te maken. In het eerste voorbeeld werd de traceback-bibliotheek geïmporteerd en werden de try-and-except-methoden gebruikt. De code is geschreven in de try-box. Als er een uitzondering optreedt, springt het snel naar het uitzonderingsblok en wordt de uitzonderingsverklaring op het scherm weergegeven. In het tweede voorbeeld hebben we de logboekregistratie gebruikt die vergelijkbaar is met het eerste voorbeeld. De exception() methode maakt gebruik van de 'info' en 'error' niveaus van logging. Als er een uitzondering optreedt, wordt er een uitzonderingsinstructie weergegeven.