Jeśli ustawię moduł logowania na DEBUG z parametrem wiersza poleceń, takim jak ten:
if (opt["log"] == "debug"):
logging.basicConfig(level=logging.DEBUG)
Jak mogę później sprawdzić, czy rejestrator został ustawiony na DEBUG? Piszę dekorator, który będzie mierzył czas funkcji, jeśli zostanie do niego przekazana flaga True, a jeśli nie zostanie podana żadna flaga, domyślnie wypisze informacje o czasie, gdy główny rejestrator jest ustawiony na DEBUG.
Odpowiedzi:
logging.getLogger()
bez argumentów pobiera rejestrator poziomu głównego.http://docs.python.org/library/logging.html#logging.Logger.getEffectiveLevel
źródło
logging.getLevelName(logging.getLogger().getEffectiveLevel())
. Byłoby miło mieć prostszą składnię, gdy wszystko, czego chcesz, to ciąg znaków dla bieżącego poziomu.Właściwie jest jeden lepszy: użyj kodu
logging.getLogger().isEnabledFor(logging.DEBUG)
. Znalazłem to, próbując zrozumieć, co zrobić z wynikiemgetEffectiveLevel()
.Poniżej znajduje się kod używany przez sam moduł logowania.
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()
źródło
Właśnie
źródło