J'ai fait un exemple de la façon de générer un journal lorsque j'ai créé mon propre module de Python.
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.
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é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é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()
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
Vérifiez le comportement lorsque l'enregistreur racine n'est pas créé.
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()
Lorsque je lance main.py, rien n'est sorti.
$ python main.py
c'est tout
Recommended Posts