#logging中的isEnabledFor函數的作用
任何打印日誌的code都會使用此函數來判斷是否執行將日誌記錄傳入handlers中。此方法是一個必要條件。只有滿足此條件的log纔會傳入到handlers中,否則不會傳入handlers中。
##isEnabledFor源碼
def isEnabledFor(self, level):
"""
Is this logger enabled for level 'level'?
"""
if self.disabled:
return False
try:
return self._cache[level]
except KeyError:
_acquireLock()
if self.manager.disable >= level:
is_enabled = self._cache[level] = False
else:
is_enabled = self._cache[level] = level >= self.getEffectiveLevel()
_releaseLock()
return is_enabled
源碼解析
將當前logger到_cache[level]取level到值,如果取到了則使用此值,否則將傳入到level賦值到_cache[level]字典中。
然後判斷level>getEffectiveLevel的值。如果返回爲true,就往下執行,否則不執行日誌記錄。