您好,欢迎来到12图资源库!分享精神,快乐你我!我们只是素材的搬运工!!
  • 首 页
  • 当前位置:首页 > 开发 > WEB开发 >
    Python 如何仅用 5000 行代码,完成弱小的 logging 模块?(2)
    时间:2021-03-08 21:02 来源:网络整理 作者:网络 浏览:收藏 挑错 推荐 打印

                    result = f(record) # assume callable - will raise if not 

                if not result: 

                    rv = False 

                    break 

            return r 

    中心的 Logger 实践上只是一个控制中心:

    class Logger(Filterer):  # logger可以过滤日志 

        def __init__(self, name, level=NOTSET): 

            Filterer.__init__(self) 

            self.name = name 

            self.level = _checkLevel(level) 

            self.parent = None  # 日志可以有层级 

            self.propagate = True 

            self.handlers = []  # 可以输入到多个handler 

            self.disabled = False  # 可以封锁 

            self._cache = {} 

         

        def debug(self, msg, *args, **kwargs):  # 输入debug日志 

            if self.isEnabledFor(DEBUG): 

                self._log(DEBUG, msg, args, **kwargs) 

    logger可以判别日志级别:

    def isEnabledFor(self, level): 

        if self.disabled: 

            return False 

     

        try

            return self._cache[level] 

        except KeyError: 

            try

                if self.manager.disable >= level: 

                    is_enabled = self._cache[level] = False 

                else

                    is_enabled = self._cache[level] = ( 

                        level >= self.getEffectiveLevel() 

                    ) 

            return is_enabled 

     

    def getEffectiveLevel(self): 

        logger = self 

        while logger: 

            if logger.level: 

                return logger.level 

            logger = logger.parent 

        return NOTSET 

    日志输入:

    def _log(self, level, msg, args, exc_info=None, extra=None, stack_info=False, 

             stacklevel=1): 

        ... 

    (责任编辑:admin)