Enregistrement Python ne produisant rien

Dans un script python que j’écris, j’essaie de consigner les événements à l’aide du module de journalisation. J’ai le code suivant pour configurer mon enregistreur:

ERROR_FORMAT = "%(levelname)s at %(asctime)s in %(funcName)s in %(filename) at line %(lineno)d: %(message)s" DEBUG_FORMAT = "%(lineno)d in %(filename)s at %(asctime)s: %(message)s" LOG_CONFIG = {'version':1, 'formatters':{'error':{'format':ERROR_FORMAT}, 'debug':{'format':DEBUG_FORMAT}}, 'handlers':{'console':{'class':'logging.StreamHandler', 'formatter':'debug', 'level':logging.DEBUG}, 'file':{'class':'logging.FileHandler', 'filename':'/usr/local/logs/DatabaseUpdate.log', 'formatter':'error', 'level':logging.ERROR}}, 'root':{'handlers':('console', 'file')}} logging.config.dictConfig(LOG_CONFIG) 

Lorsque j’essaie d’exécuter logging.debug("Some ssortingng") , je n’obtiens aucune sortie sur la console, même si cette page dans docs indique que logging.debug doit afficher le message dans le logging.debug racine. Pourquoi mon programme ne produit-il rien et comment puis-je le réparer?

Le niveau de journalisation par défaut est un avertissement. Comme vous n’avez pas modifié le niveau, le niveau de l’enregistreur racine est toujours en alerte. Cela signifie qu’il ignorera toute journalisation avec un niveau inférieur à l’avertissement, y compris les enregistrements de débogage.

Ceci est expliqué dans le tutoriel :

 import logging logging.warning('Watch out!') # will print a message to the console logging.info('I told you so') # will not print anything 

La ligne “info” n’imprime rien, car le niveau est supérieur à info.

Pour modifier le niveau, il suffit de le définir dans l’enregistreur racine:

 'root':{'handlers':('console', 'file'), 'level':'DEBUG'} 

En d’autres termes, il ne suffit pas de définir un gestionnaire avec level = DEBUG, le niveau de journalisation réel doit également être DEBUG afin de pouvoir générer quelque chose.

Peut-être essayer ça? il semble que le problème soit résolu après avoir retiré tous les gestionnaires de mon cas.

 for handler in logging.root.handlers[:]: logging.root.removeHandler(handler) logging.basicConfig(filename='output.log', =logging.INFO)