[Python] journalisation dans votre propre module

Aperçu

J'ai fait un exemple de la façon de générer un journal lorsque j'ai créé mon propre module de Python.

Traitement du contenu

Appelez un module appelé sample.py depuis main.py. J'écris le processus de sortie du journal dans sample.py, mais si l'enregistreur racine n'est pas créé dans main.py, l'enregistreur du module ne produira rien.

Mains sur

Créer un module

Créez à l'intérieur du module. Écrivez le traitement de la sortie du journal.

sample.py


# -*- coding:utf-8 -*-
from logging import getLogger, DEBUG, NullHandler


class Sample:
    def __init__(self):
        self._logger = getLogger(__name__)
        self._logger.addHandler(NullHandler())
        self._logger.setLevel(DEBUG)
        self._logger.propagate = True

    def main(self):
        self._logger.debug('Debug')
        self._logger.info('Info')
        self._logger.warn('Warn')
        self._logger.error('Error')

Créer un enregistreur racine

Créez une définition d'enregistreur racine à utiliser dans main.py avec le nom de fichier my_logger.py. (La définition suivante peut être faite dans main.py, mais elle se trouve dans un fichier séparé.)

my_logger.py


# -*- coding:utf-8 -*-
from logging import Formatter, handlers, StreamHandler, getLogger, DEBUG


def root_logger():
    #Obtenir un enregistreur racine
    logger = getLogger()

    #Créer un formateur
    formatter = Formatter('%(asctime)s %(name)s %(funcName)s [%(levelname)s]: %(message)s')

    #Créer un gestionnaire et définir un formateur
    handler = StreamHandler()
    handler.setFormatter(formatter)

    #Définir le gestionnaire dans le journal, définir le niveau pour la capture d'événements
    logger.addHandler(handler)
    #définir le niveau de journalisation
    logger.setLevel(DEBUG)

    return logger

Créer main.py

Créez main.py qui appelle le module Sample. Comme vous pouvez le voir dans le commentaire ci-dessous, appelez my_logger.py créé précédemment pour créer un enregistreur racine.

main.py


#!/usr/bin/env python
# -*- coding:utf-8 -*-
import my_logger
import sample
from logging import Formatter, handlers, StreamHandler, getLogger, INFO


if __name__ == '__main__':
    #Créer un enregistreur racine
    logger = my_logger.root_logger()
    logger.info('The root logger is created.')

    #Appel de module
    sample = sample.Sample()
    sample.main()

Courir

Lorsque vous exécutez main.py, le journal sera généré comme indiqué ci-dessous.

$ python main.py
2020-02-17 14:01:21,721 root <module> [INFO]: The root logger is created.
2020-02-17 14:01:21,721 sample main [DEBUG]: Debug
2020-02-17 14:01:21,721 sample main [INFO]: Info
2020-02-17 14:01:21,721 sample main [WARNING]: Warn
2020-02-17 14:01:21,721 sample main [ERROR]: Error

Si vous ne créez pas d'enregistreur racine

Vérifiez le comportement lorsque l'enregistreur racine n'est pas créé.

Modifier main.py

Mettez en commentaire la partie de main.py qui crée l'enregistreur racine.

main.py


#!/usr/bin/env python
# -*- coding:utf-8 -*-
import my_logger
import sample
from logging import Formatter, handlers, StreamHandler, getLogger, INFO


if __name__ == '__main__':
    #Commentez ce qui suit.
    # logger = my_logger.root_logger()
    # logger.info('The root logger is created.')

    #Appel de module
    sample = sample.Sample()
    sample.main()

Courir

Lorsque je lance main.py, rien n'est sorti.

$ python main.py

c'est tout

référence

Recommended Posts

[Python] journalisation dans votre propre module
[LLDB] Créez votre propre commande avec Python
Utilisez facilement vos propres fonctions en Python
Obtenez votre propre adresse IP en Python
Se connecter correctement en Python
Créez rapidement votre propre module avec setuptools (python)
Importez vos propres modules avec le développement Python de Grasshopper
Créez votre propre Big Data en Python pour validation
Créez votre propre stéréogramme aléatoire (RDS) en Python.
Essayez d'améliorer votre propre quiz d'introduction avec Python
Utilisez CASA Toolkit dans votre propre environnement Python
[Road to Intermediate Python] Définissez dans votre propre classe
Appelez votre propre module python à partir du package ROS
[Python] Créez votre propre bot LINE
Essayez de trier vos propres objets avec des files d'attente prioritaires en Python
Exécuter le module Python unittest dans vs2017
Journalisation Python
Maîtriser le module lowref en Python
Créez votre propre classe de structure graphique et son dessin avec python
Essayez de vous connecter à qiita avec Python
Module d'implémentation de file d'attente et Python "deque"
Comparaison des modules de conversion japonais en Python3
[Python] Empaquetez et distribuez vos propres modules
[Python] Enregistrez votre propre bibliothèque dans PyPI
Jusqu'à ce que vous installiez votre propre bibliothèque Python
Pour importer votre propre module avec jupyter
Module pour générer le mot N-gramme en Python
ModuleNotFoundError en Python: aucun module nommé story
Publiez votre propre bibliothèque Python sur Homebrew
Essayez de fouiller votre journal avec Python
Obtenez Cloud Logging disponible en Python en 10 minutes
Importation de modules et gestion des exceptions en python
Installez le module Python dans n'importe quel répertoire
Mise à niveau du module Python dans OSX El Capitan
Erreur d'importation: aucun module nommé "xxxxxx" dans Python3
Quadtree en Python --2
Python en optimisation
CURL en Python
Métaprogrammation avec Python
Python 3.3 avec Anaconda
Géocodage en python
SendKeys en Python
Méta-analyse en Python
Importer le module Python
Unittest en Python
Époque en Python
Discord en Python
Créez vous-même le tracé familier du flux de rayons X sur 3 jours de NOAA / GOES avec Python
Allemand en Python
DCI en Python
tri rapide en python
nCr en python
N-Gram en Python
Programmation avec Python
Plink en Python
Constante en Python
FizzBuzz en Python
Sqlite en Python