Lorsque j'écris un nouveau code expérimental, j'oublie toujours la magie de la journalisation, je vais donc l'écrire pour pouvoir le copier.
On suppose que la situation est la suivante.
Écrivez ce qui suit dans le fichier de la bibliothèque.
Le niveau de journalisation de ce fichier est défini sur logger.setLevel (log.INFO)
. (Utile lorsque vous souhaitez déboguer chaque fonction)
module.py
import logging as log
#Paramètres de l'enregistreur pour chaque fichier
logger = log.getLogger(__name__)
logger.setLevel(log.INFO) #Changer le niveau d'affichage pour chaque module
def func():
logger.info("From module.func()")
logger.info("Key1\tValue")
logger.debug("Ceci n'est pas affiché")
Et pour le script principal qui importe et utilise cette bibliothèque, écrivez comme suit.
La définition autour de formatter
est votre choix. La séparation par tabulation du message et des versions antérieures, comme dans cet exemple, facilitera le traitement du fichier journal ultérieurement.
** 2020/06/03 Correction: Il semble que le niveau du journal à afficher devait être défini du côté du gestionnaire, donc je l'ai corrigé de cette façon. ** **
main.py
import logging as log
import module
#Paramètres de l'enregistreur pour chaque fichier
logger = log.getLogger(__name__)
if __name__=="__main__":
formatter = "[%(asctime)s] %(levelname)s - %(name)s\t%(message)s"
handlers = [log.StreamHandler(), log.FileHandler("logfile")]
for handler in handlers:
handler.setLevel(log.INFO) #Niveau de journal à afficher
log.basicConfig(
level = log.DEBUG, format = formatter, handlers = handlers
)
#Sortie de journal
logger.info("Call module.func() from main.")
module.func()
logger.debug("Ceci est affiché")
Les journaux suivants sont respectivement émis vers la sortie standard et le fichier. C'est pratique car vous pouvez voir de quel fichier le journal a été envoyé.
[2020-05-15 12:39:20,676] INFO - __main__ Call module.func() from main.
[2020-05-15 12:39:20,677] INFO - module From module.func()
[2020-05-15 12:39:20,678] INFO - module Key1 Value
[2020-05-15 12:39:20,680] DEBUG - __main__Ceci est affiché