Determinar si root logger está establecido en el nivel de depuración en Python?


Si establezco el módulo de registro para DEPURAR con un parámetro de línea de comandos como este:

if (opt["log"] == "debug"):
  logging.basicConfig(level=logging.DEBUG)

¿Cómo puedo saber más tarde si el registrador se configuró para DEPURAR? Estoy escribiendo un decorador que cronometrará una función si se le pasa True flag, y si no se le da ningún flag, por defecto para imprimir información de tiempo cuando el logger raíz está configurado para DEPURAR.

Author: Sean McAllister, 2010-01-01

2 answers

logging.getLogger().getEffectiveLevel()

logging.getLogger() sin argumentos obtiene el logger de nivel raíz.

Http://docs.python.org/library/logging.html#logging.Logger.getEffectiveLevel

 79
Author: Tor Valamo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-12-31 23:40:56

En realidad, hay uno mejor: usa el código logging.getLogger().isEnabledFor(logging.DEBUG). Lo encontré mientras trataba de entender qué hacer con el resultado de getEffectiveLevel(). :-)

(A continuación se muestra una imagen del código que utiliza el propio módulo de registro.)

código de registro

 76
Author: Pat,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-03-23 16:46:22