Un mémorandum lors de l'écriture de code expérimental ~ Se connecter en python

introduction

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.

code

É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é")

Exemple de sortie

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é

Recommended Posts

Un mémorandum lors de l'écriture de code expérimental ~ Se connecter en python
Lors de l'écriture d'un programme en Python
Précautions lors du décapage d'une fonction en python
Ce que les utilisateurs d'Emacs doivent savoir lors de l'écriture de code Python dans Sublime Text
[Astuces] Écriture facile à lire lors de la connexion de fonctions en Python
Argument de variable Python Un mémorandum lors de l'héritage d'une classe définie
Un mémo que j'ai écrit un tri de fusion en Python
Diviser les fichiers lors de l'écriture du plugin vim en python
Se connecter correctement en Python
Avant d'écrire du code Python
Une collection de code souvent utilisée dans Python personnel
Un mémorandum pour exécuter un script python dans un fichier bat
Choses à noter lors de l'initialisation d'une liste en Python
Que contient cette variable (lorsque le script Python est en cours d'exécution)
Utilisez communiquer () lors de la réception de la sortie dans un sous-processus Python
Prendre une capture d'écran en Python
Créer un dictionnaire en Python
Mémorandum sur la corrélation [Python]
Créer un bookmarklet en Python
Attention lorsque os.mkdir en Python
Générer du code QR en Python
Un mémorandum sur le simulacre de Python
Dessinez un cœur en Python
Code de caractère appris en Python
[Django] Mémorandum lorsque vous souhaitez communiquer de manière asynchrone [Python3]
Une note lors de la création d'un graphe dirigé à l'aide de Graphviz en Python
Faites quelque chose comme un interpréteur Python avec Visual Studio Code
Bloc de code lors de l'écriture de l'exécution de la commande console (shell) dans Qiita
[GCP] Un mémorandum lors de l'exécution d'un programme Python avec Cloud Functions
Méthode d'écriture pratique lors de l'ajout continu à la liste en Python
Créez le code qui renvoie "A et prétendant B" en python
Un mémo que j'ai écrit une fonction de base en Python en utilisant la récurrence
Résumé des points à garder à l'esprit lors de l'écriture d'un programme qui s'exécute sur Python 2.5
[Sous-processus] Lorsque vous souhaitez exécuter un autre programme Python en code Python
Concurrence avec VS Code Créez un environnement Python pour les professionnels sous Windows
Ecrire une dichotomie en Python
Un mémorandum lors de l'utilisation d'une belle soupe
Précautions lors de l'utilisation de Pit avec Python
Appuyez sur une commande en Python (Windows)
[Python] journalisation dans votre propre module
[Python] Générer un code QR en mémoire
Créer un conteneur DI avec Python
Comportement lors de la liste dans Python heapq
Dessinez une matrice de diagramme de dispersion avec python
Ligne de mode lorsque vous ouvrez le code Python approprié dans Vim
Paramètres lors de l'écriture d'applications Google App Engine / Python avec Intellij Idea
ABC166 en Python A ~ C problème
Ecrire des algorithmes A * (A-star) en Python
[Python] Temps d'exécution lorsqu'une fonction est saisie dans une valeur de dictionnaire
Créer un fichier binaire en Python
Spécification du fuseau horaire lors de la conversion d'une chaîne de caractères en type datetime avec python
[Python ORM] Notation lors de l'écriture de SQL à l'aide de sous-requêtes dans la clause IN dans SQL Alchemy
Ecrire le code de test du sélénium en python
Résoudre ABC036 A ~ C avec Python
Ecrire un graphique à secteurs en Python
Ecrire le plugin vim en Python
Écrire une recherche de priorité en profondeur en Python
Notes pour écrire du code de type Python
J'obtiens un attribut impossible à définir lors de l'utilisation de @property en python
Précautions lors de la création d'un générateur Python