Si configuro el módulo de registro en DEBUG con un parámetro de línea de comando como este:
if (opt["log"] == "debug"):
logging.basicConfig(level=logging.DEBUG)
¿Cómo puedo saber más tarde si el registrador se configuró en DEBUG? Estoy escribiendo un decorador que cronometrará una función si se le pasa el indicador Verdadero, y si no se le da ningún indicador, por defecto imprime la información de tiempo cuando el registrador raíz está configurado en DEBUG.
Respuestas:
logging.getLogger()
sin argumentos obtiene el registrador de nivel raíz.http://docs.python.org/library/logging.html#logging.Logger.getEffectiveLevel
fuente
logging.getLevelName(logging.getLogger().getEffectiveLevel())
. Sería bueno tener una sintaxis más simple cuando todo lo que desea es la cadena para el nivel actual.De hecho, hay uno mejor: usa el código
logging.getLogger().isEnabledFor(logging.DEBUG)
. Lo encontré mientras intentaba entender qué hacer con el resultado degetEffectiveLevel()
.A continuación se muestra el código que utiliza el módulo de registro.
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()
fuente
Sólo
fuente