Si je règle le module de journalisation sur DEBUG avec un paramètre de ligne de commande comme celui-ci:
if (opt["log"] == "debug"):
logging.basicConfig(level=logging.DEBUG)
Comment puis-je savoir plus tard si l'enregistreur a été défini sur DEBUG? J'écris à un décorateur que Chronométrera une fonction si le drapeau True lui est transmis, et si aucun drapeau n'est donné, il utilisera par défautpour imprimer des informations de minutage lorsque l'enregistreur racine est défini sur DEBUG.
logging.getLogger().getEffectiveLevel()
logging.getLogger()
sans argument obtient le logger de niveau racine.
http://docs.python.org/library/logging.html#logging.Logger.getEffectiveLevel
En fait, il y en a un meilleur: utilisez le code logging.getLogger().isEnabledFor(logging.DEBUG)
. Je l'ai trouvé en essayant de comprendre quoi faire avec le résultat de getEffectiveLevel()
.
Vous trouverez ci-dessous le code utilisé par le module de journalisation.
def getEffectiveLevel(self):
"""
Get the effective level for this logger.
Loop through this logger and its parents in the blogger hierarchy,
looking for a non-zero logging level. Return the first one found.
"""
logger = self
while logger:
if logger.level:
return logger.level
logger = logger.parent
return NOTSET
def isEnabledFor(self, level):
"""
Is this logger enabled for level ‘level’?
"""
if self.manager.disable >= level:
return 0
return level >= self.getEffectiveLevel()
Juste
logging.getLogger().level == logging.DEBUG