Journalisation Python (nom de la fonction, nom du fichier, numéro de ligne) à l’aide d’un seul fichier

| | | | | | | | | | | |

J'essaie d'apprendre comment fonctionne une application. Et pour cela, j'insère des commandes de débogage comme première ligne du corps de chaque fonction dans le but de consigner le nom de la fonction ainsi que le numéro de ligne (dans le code) où j'envoie un message à la sortie du journal. Enfin, étant donné que cette application comprend de nombreux fichiers, je souhaite créer un seul fichier journal afin de mieux comprendre le flux de contrôle de l'application.

Voici ce que je sais :

  1. pour obtenir le nom de la fonction, je peux utiliser function_name.__name__ mais je ne veux pas utiliser le function_name (pour que je puisse rapidement copier et coller un Log générique .info("Message") dans le corps de toutes les fonctions). Je sais que cela pourrait être fait en C en utilisant la macro __func__ mais je ne suis pas sûr de python.

  2. pour obtenir le nom de fichier et le numéro de ligne, j'ai vu que (et je crois que) mon application utilise la fonction Python locals() mais dans une syntaxe que je suis pas complètement au courant par exemple: options = "LOG.debug("%(flag)s : %(flag_get)s" % locals()) et je l'ai essayé en utilisant comme LOG.info ("My message %s" % locals()) qui produit quelque chose comme {"self": <__main__.Class_name object at 0x22f8cd0>}. Toute entrée à ce sujet s'il vous plaît ?

  3. Je sais comment utiliser la journalisation et y ajouter un gestionnaire pour se connecter à un fichier, mais je ne suis pas sûr qu'un seul fichier puisse être utilisé pour enregistrer tous les messages de journal dans l'ordre correct des appels de fonction dans le projet.

J'apprécierais grandement toute aide.

Merci !