python logging 的isEnabledFor(self, level)的作用

#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,就往下執行,否則不執行日誌記錄。

發佈了14 篇原創文章 · 獲贊 1 · 訪問量 6561
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章