Imprimer StackTrace dans le journal Pyhton

Imprimer StackTrace dans le journal Pyhton
Une collection d'appels d'approche à un moment particulier est représentée dans un stacktrace. Lorsqu'un programme soulève une exception, Python génère un StackTrace, également connu sous le nom de trace ou de retour en arrière. Il existe une variété de détails dans ce stacktrace qui peuvent être exploités pour localiser le problème. Le package de journalisation Python est livré avec plusieurs caractéristiques fondamentales et dispose de plusieurs niveaux de journalisation, notamment «débogage», «info», «avertissement», «erreur» et «critique».

Exemple 1: Imprimez StackTrace dans Python en utilisant le module Traceback

Dans cet exemple, nous utiliserons un simple morceau de code pour montrer comment implémenter le module Traceback du Python pour imprimer la trace de pile. Ce package de trackback comprend une fonctionnalité très appréciée pour la collecte, le stockage et la présentation des traces de pile à partir des langues informatiques. Il reproduit fidèlement les opérations d'impression de trace de pile d'un script. Si jamais vous avez besoin de visualiser la trace de pile, c'est essentiel.

En d'autres termes, une trace de pile affiche chaque opération qui est venue avant celle qui a abouti au problème. Les informations les plus importantes sont toujours rapportées sur la dernière ligne d'une trace de pile, c'est-à-dire lorsque le défaut est identifié. Tous les appels de fonction dans l'erreur résultante peuvent être utilisés pour localiser et résoudre rapidement le problème.

Commençons par implémenter le code en importation de la bibliothèque Traceback Python. Ensuite, dans la ligne suivante, nous créons un tableau et répertorions les éléments avec certaines valeurs. Les valeurs de la liste des tableaux sont «7», «8», «9» et «10». Il y a quatre valeurs dans la liste des tableaux. Cette liste de tableaux a été enregistrée dans la variable précédemment initialisée «A».

Après cela, nous utilisons le terme «essayez» et la valeur «a = 6» dans la ligne suivante. Nous utilisons les blocs d'essai à Python pour gérer les exceptions. Cette approche est utilisée pour écrire le script qui pourrait augmenter une erreur dans l'en-tête de bloc. Les exceptions sont essentiellement des erreurs, similaires aux erreurs de syntaxe. Au cours d'une exception d'un programme, la gestion des exceptions est l'acte unique de répondre à l'exception. Retour au script, nous utilisons «sauf» dans la ligne suivante.

Dans le bloc sauf, nous utilisons «Traceback.imprimer exc () ”qui est abrégé pour" imprimer exception ". Nous utilisons la fonction «print ()» à l'intérieur de la boîte d'exception qui est «Fin du programme» afin que cette déclaration imprime lorsque l'exception se produit. Maintenant, si une exception se produit dans la boîte d'essai, le programme se déplace immédiatement vers les blocs sauf et continue. Si une exception ne se produit pas, le bloc d'exception est entièrement ignoré. Maintenant que l'exception se produit, nous pouvons voir dans le code que la valeur «6» a été entrée dans la boîte d'essai même si elle n'est pas dans la liste des tableaux. En conséquence, le code va immédiatement à la boîte d'exception et imprime l'instruction «Programme Ends» dans l'affichage de sortie.

Les différents appels de fonction qui composent les traceback sont commandés du plus récent au moins récent, du bas en haut. Ces opérations sont toutes représentées par des déclarations à deux lignes. Chaque appel commence par le nom de fichier, le numéro de séquence et le nom du module, qui indiquent tous l'emplacement du code. Après cela, il affiche la déclaration d'impression d'exception «End» du programme car la valeur «6» n'était pas dans la liste déclarée, ce qui entraîne la sortie «INDEX DE LISTE».

Exemple 2: Imprimez StackTrace dans Python en utilisant la journalisation.Méthode exception ()

Dans cet exemple, nous allons montrer comment utiliser la «journalisation de Python.exception () ”Méthode pour sortir un stackTrace. Le package de journalisation de Python nous permet de enregistrer les erreurs et d'enregistrer les erreurs et les exceptions. Les modules de journalisation nous donnent une sélection de modules de journalisation, notamment «débogage», «info», «avertissement», «erreur» et «critique». Ce sont essentiellement des couches de modules de journalisation, pour le dire simplement. Pour enregistrer une exception avec une erreur dans Python, utilisez la «journalisation.Fonction exception () ”. Cette fonction ajoute un rapport avec l'état d'erreur à cet enregistreur. On pense que les paramètres sont pour déboguer. Les informations sur l'exception sont jointes au rapport de journalisation. Le seul emplacement à partir de laquelle invoquer cette procédure devrait être les gestionnaires d'exception.

Maintenant, regardons le code. Tout d'abord, nous importons deux bibliothèques - dont la première est la journalisation et le second est traceback. Ensuite, nous utilisons la méthode «BasicConfig» avec «journalisation» et spécifions le niveau comme «journalisation.Déboguer". Le seul argument que la méthode «getlogger ()» prend est «Nom». Ainsi, nous l'utilisons lors de l'utilisation de la «journalisation.Fonction Getlogger. Si un nom est donné, une référence à une instance d'enregistrement avec ce nom est générée; Sinon, la racine est retournée. Le même objet Logger est référencé par de nombreuses opérations GetLogger () avec la même identité.

Ensuite, nous utilisons pour essayer, et comme nous le savons dans le bloc d'essai, nous écrivons le code qui pourrait lever une exception. Dans ce cas, nous utilisons «myFunction ()». Si la situation donnée ne correspond pas, une exception se produit. Ensuite, le code saute immédiatement au bloc sauf. Dans ce blog d'exception, nous utilisons la «journalisation.Info". À l'intérieur, nous écrivons le message que nous voulons imprimer, ce qui est «l'exception a eu lieu». En effet, si une exception se produit, une erreur se produit simplement, il affiche ce message à l'écran. Mais si l'erreur ne se produit pas, elle ignore l'ensemble du message d'exception.

Nous définissons également le «Exn info = true» avec le message. L'ensemble du StackTrace sera inclus dans la journalisation lorsque les informations Exc sont définies sur true, similaire à ce qui se passe avec «Logger.exception()". La seule distinction est que vous pouvez rapidement passer le niveau de journal de l'erreur à autre chose en échangeant simplement l'enregistreur.

Maintenant qu'une exception s'est produite dans le script, la première ligne de sortie est le message «Exception a eu lieu» suivi du niveau de journalisation qui a été utilisé dans le script qui est «Info."Le nom de l'enregistreur apparaît comme la racine dans ce cas. Ensuite, l'appel Traceback apparaît, affichant les noms du module, de la ligne et des fichiers. Enfin, le message d'erreur «myfonction» n'est pas défini.

Parlons d'un autre code qui utilise la journalisation. La méthode exception () commence par importer la bibliothèque pour la journalisation. Ensuite, deux variables - «M» et «N» - sont initialisées et étant donné les valeurs de «7» et «0», respectivement. Le bloc d'essai est maintenant utilisé à l'étape suivante. À l'intérieur, nous écrivons le code qui pourrait provoquer une exception. Tout d'abord, nous déclarons la variable «O». Ensuite, nous avons réglé ce «M» divisé par «n». Cela provoque une exception parce que le dénominateur est nul et nous ne pouvons diviser aucun nombre par zéro, ce qui signifie que les erreurs surgiront. En conséquence, le code passe au bloc sauf où «journalisation.une erreur »est utilisée. L'erreur est le niveau de journalisation. Si une exception se produit, nous imprimons un message ou une déclaration qui dit: «Exception s'est produite» et nous définissons «EXC info = true». Si nous ne le définissons pas sur true, il imprime uniquement le bloc d'exception et n'affiche pas les informations de trace.

Parce que nous avons choisi le niveau «Erreur» dans notre script, il affiche d'abord la racine comme le nom de l'enregistreur, suivi du message «Exception s'est produit». Les informations de trace qui comprenaient le nom de fichier, le numéro de ligne et le module sont ensuite affichées. La ligne suivante affiche alors un avis d'erreur car le dénominateur ne peut pas être nul. Et comme le dénominateur est nul dans ce code, l'erreur est appelée une erreur de divisor nul.

Conclusion

Dans cet article, nous avons examiné le processus d'impression d'un stacktrace dans un journal Python ainsi que comment utiliser le module Traceback pour créer une trace de pile. Dans le premier exemple, la bibliothèque Traceback a été importée et les méthodes d'essai et sauf ont été utilisées. Le code a été écrit dans la boîte d'essai. Si une exception se produit, il saute rapidement vers le bloc d'exception et affiche l'instruction d'exception à l'écran. Dans le deuxième exemple, nous avons utilisé la journalisation qui similaire au premier exemple. La méthode Exception () utilise les niveaux de journalisation «infos» et «erreur». Si une exception se produit, elle affiche une instruction d'exception.