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

                raise ValueError("Invalid format '%s' for '%s' style" % (self._fmt, self.default_format[0])) 

     

        def _format(self, record): 

            return self._fmt % record.__dict__  # 格式化日志记载对象 

     

        def format(self, record): 

            try

                return self._format(record) 

            except KeyError as e: 

                raise ValueError('Formatting field not found in record: %s' % e) 

    滚动日志文件处置器

    线上的日志继续输入到一个文件的话,会让文件庞大,即有加剧了丧失的风险,也难以处置。通常有按照大小滚动或许按照日期滚动的办法,这个功用十分重要。先看滚动日志处置器模版:

    class BaseRotatingHandler(logging.FileHandler): 

        def emit(self, record): 

            try

                if self.shouldRollover(record): # 判别能否需求滚动 

                    self.doRollover()  # 滚动日志 

                logging.FileHandler.emit(self, record)  # 输入日志 

            except Exception: 

                self.handleError(record) 

         

        def rotate(self, source, dest): 

            if not callable(self.rotator): 

                if os.path.exists(source): 

                    os.rename(source, dest)  # 重命名日志文件 

            else

                self.rotator(source, dest) 

    按大小滚动 RotatingFileHandler

    按照文件大小滚动的处置器:

    class RotatingFileHandler(BaseRotatingHandler): 

     

        def __init__(self, filename, mode='a', maxBytes=0, backupCount=0, encoding=None, delay=False): 

            if maxBytes > 0

                mode = 'a' 

            BaseRotatingHandler.__init__(self, filename, mode, encoding, delay) 

            self.maxBytes = maxBytes  # 单个文件大小下限 

            self.backupCount = backupCount  # 日志备份数量 

             

        def doRollover(self):  # 执行滚动 

            if self.stream: 

                self.stream.close()  # 封锁以后的流 

                self.stream = None 

            if self.backupCount > 0

    (责任编辑:admin)