114 votes

Comment lister tous les enregistreurs existants à l'aide du module python.logging

Existe-t-il un moyen en Python d'obtenir une liste de tous les enregistreurs définis?

Je veux dire, existe-t-il quelque chose comme logging.getAllLoggers() qui renverrait une liste d'objets Logger

J'ai cherché dans la documentation python.logging mais je n'ai pas trouvé une telle méthode.

Merci en avance.

187voto

Will Keeling Points 9481

Les enregistreurs sont tenus dans une hiérarchie par une instance logging.Manager Vous pouvez interroger le manager sur l'enregistreur racine pour les enregistreurs qu'il connaît.

 import logging

loggers = [logging.getLogger(name) for name in logging.root.manager.loggerDict]

L'appel de getLogger(name) garantit que tous les enregistreurs d'espace réservé détenus par loggerDict sont entièrement initialisés lorsqu'ils sont ajoutés à la liste.

25voto

Jonathan L Points 1

Si vous souhaitez également inclure RootLogger dans la liste, faites quelque chose de similaire à:

 import logging
loggers = [logging.getLogger()]  # get the root logger
loggers = loggers + [logging.getLogger(name) for name in logging.root.manager.loggerDict]

testé sur Python 3.7.4

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X