Если я установлю для модуля ведения журнала значение DEBUG с таким параметром командной строки:
if (opt["log"] == "debug"):
logging.basicConfig(level=logging.DEBUG)
Как я могу позже определить, установлен ли регистратор на DEBUG? Я пишу декоратор, который будет синхронизировать функцию, если ему передан флаг True, и если флаг не задан, он по умолчанию выводит информацию о времени, когда корневой регистратор установлен на DEBUG.
Ответы:
logging.getLogger()
без аргументов получает логгер корневого уровня.http://docs.python.org/library/logging.html#logging.Logger.getEffectiveLevel
источник
logging.getLevelName(logging.getLogger().getEffectiveLevel())
. Было бы неплохо иметь более простой синтаксис, когда все, что вам нужно, - это строка для текущего уровня.На самом деле, лучше использовать код
logging.getLogger().isEnabledFor(logging.DEBUG)
. Нашел, пытаясь понять, что делать с результатомgetEffectiveLevel()
.Ниже приведен код, который использует сам модуль ведения журнала.
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()
источник
Только
источник