当前位置: 首页 > news >正文

建立企业门户网站甘肃做网站哪个平台好

建立企业门户网站,甘肃做网站哪个平台好,app开发外包网,wordpress 解析插件文章目录 一、基于 RotatingFileHandler 的自定义处理程序二、基于 TimedRotatingFileHandler 的自定义处理程序 Python logging模块的基本使用、进阶使用详解 Python logging.handlers模块#xff0c;RotatingFileHandler、TimedRotatingFileHandler 处理器各参数详细介绍 … 文章目录 一、基于 RotatingFileHandler 的自定义处理程序二、基于 TimedRotatingFileHandler 的自定义处理程序 Python logging模块的基本使用、进阶使用详解 Python logging.handlers模块RotatingFileHandler、TimedRotatingFileHandler 处理器各参数详细介绍 Python logging.config模块logging.config.fileConfig()、logging.config.dictConfig() 使用介绍 python logging模块Filters过滤器介绍如何使用自定义的过滤器 这篇文章将介绍如何在logging.config.dictConfig()日志配置方式下使用自定义的Handler处理程序。 一、基于 RotatingFileHandler 的自定义处理程序 默认情况下使用logging.handlers.RotatingFileHandler()生成的备份文件不是以.log为后缀例如原日志文件为rotated.log那么生成的备份日志文件为rotated.log.xxxxxx为数字。 接下来将使用自定义处理程序将生成的备份日志文件的后缀改为rotated.xxx.log rtfHandler.py 自定义处理程序模块 # -*- coding:utf-8 -*- import logging import logging.handlers import os import redef my_rotating_file_handler(filename,modea,maxBytes0,backupCount0,encodingNone,delayFalse):rh logging.handlers.RotatingFileHandler(filename,modemode,maxBytesmaxBytes,backupCountbackupCount,encodingencoding,delaydelay)global bckCount # 声明全局变量供 remove_old_log()、rotator() 方法使用bckCount backupCount# 调用新实现的备份日志文件命名规则rh.rotator rotatorrh.namer namerreturn rhdef namer(name):# 在备份文件后增加 .log 后缀 name name .logreturn namedef rotator(source, dest):global dest_file # 声明全局变量供 remove_old_log() 方法使用dest_file destsp dest.rsplit(.,3)sp.pop(1) # 删除备份文件中间的那个.log# 因为改了备份日志文件名称规则所以原有的备份规则失效了下面是重写的备份规则for dst in range(bckCount,0,-1):sp[1] str(dst)dest ..join(sp)if os.path.exists(dest):os.remove(dest)sp[1] str(dst-1)src ..join(sp)if os.path.exists(src):os.rename(src,dest)sp[1] str(1)dest ..join(sp)os.rename(source,dest)remove_old_log()# 因为改变了命名规则所以重新实现了一个删除旧日志文件的方法 def remove_old_log():logdir os.path.dirname(dest_file)fname os.path.basename(dest_file)flist os.listdir(logdir)fsplit fname.rsplit(.,3)pattern re.compile(r..join([fsplit[0],[0-9],fsplit[3]]))for f in flist:if re.match(pattern,f) and int(f.rsplit(.,2)[1]) bckCount:fpath os.path.join(logdir,f)os.remove(fpath) rtfLog.yaml 日志配置文件handlers.rtfhandler 下配置了一个自定义的处理程序 version: 1 disable_existing_loggers: false formatters:simple:format: [%(asctime)s - %(name)s - %(levelname)-8s] %(message)s handlers:console:class: logging.StreamHandlerformatter: simplelevel: DEBUGstream: ext://sys.stdoutrtfhandler:# 通过()键引用一个自定义的处理程序# ext:// 用来告诉dicConfig()它后面的config.rtfHandler.my_rotating_file_handler 是配置以外的对象(): ext://config.rtfHandler.my_rotating_file_handlerlevel: DEBUGformatter: simple# 下面的标量都是提供给自定义的处理程序方法的参数filename: rotated.logmode: amaxBytes: 40backupCount: 2encoding: utf8delay: False loggers:mylogger:level: DEBUGhandlers: [console,rtfhandler]propagate: nortfLogger.py 封装日志模块使用dictConfig()读取日志配置文件以完成日志配置 # -*- coding:utf-8 -*- import logging.config import yaml import osclass Logger():def __init__(self,logger_name):self.logger_name logger_name# 获取当前文件所在目录cur_dir os.path.dirname(__file__)# 拼接对应的yaml配置文件路径log_conf os.path.join(cur_dir, logconf, rtflog.yaml)with open(log_conf, r, encodingutf8) as f:config yaml.safe_load(f.read())# 加载配置文件logging.config.dictConfig(config)def logger(self):logger logging.getLogger(self.logger_name)return loggermain.py 主程序测试日志功能 # -*- coding:utf-8 -*- from config.rtfLogger import Logger import timemlogger Logger(mylogger).logger()for i in range(10):mlogger.info(fMessage no. {i 1})time.sleep(1)运行main.py程序输出 二、基于 TimedRotatingFileHandler 的自定义处理程序 默认情况下使用logging.handlers.TimedRotatingFileHandler ()生成的备份文件不是以.log为后缀例如原日志文件为timed_rotated.log那么生成的备份日志文件为timed_rotated.log.xxxxxx为格式化的日期时间如2023-08-21_23-56-50。 接下来将使用自定义处理程序将生成的备份日志文件的后缀改为rotated.xxx.log trfHandler.py 自定义处理程序模块 # -*- coding:utf-8 -*- import logging import logging.handlers import os import redef my_timed_rotating_file_handler(filename,whenh,interval1,backupCount0,encodingNone,delayFalse,utcFalse,atTimeNone):global trfhtrfh logging.handlers.TimedRotatingFileHandler(filenamefilename,whenwhen,intervalinterval,backupCountbackupCount,encodingencoding,delaydelay,utcutc,atTimeatTime)trfh.rotator rotatortrfh.namer namerreturn trfhdef namer(name):name name .logreturn name# 重新定义了备份文件命名规则 def rotator(source, dest):fsp dest.rsplit(.,3)fsp.pop(1)dest ..join(fsp)os.rename(source,dest)remove_old_log(trfh)# 重新定义了旧备份文件删除规则 def remove_old_log(trfh):logdir os.path.dirname(trfh.baseFilename)fname os.path.basename(trfh.baseFilename)pattern re.compile(fname.rsplit(.,1)[0] \. trfh.extMatch.pattern[1:],re.ASCII)flist os.listdir(logdir)loglist []for f in flist:if re.match(pattern,f):loglist.append(f)loglist.sort(reverseTrue)backupCount trfh.backupCountlog_to_remove loglist[backupCount:] if len(loglist) backupCount else []for ltr in log_to_remove:os.remove(os.path.join(logdir,ltr))trfLog.yaml 日志配置文件handlers.trfhandler 下配置了一个自定义的处理程序 version: 1 disable_existing_loggers: false formatters:simple:format: [%(asctime)s - %(name)s - %(levelname)-8s] %(message)s handlers:console:class: logging.StreamHandlerformatter: simplelevel: DEBUGstream: ext://sys.stdouttrfhandler:# 通过()键引用一个自定义的处理程序# ext:// 用来告诉dicConfig()它后面的config.rtfHandler.my_rotating_file_handler 是配置以外的对象(): ext://config.trfHandler.my_timed_rotating_file_handlerlevel: DEBUGformatter: simple# 下面的标量都是提供给自定义的处理程序方法的参数filename: timed_rotated.logwhen: Sinterval: 2backupCount: 2encoding: utf8delay: Falseutc: FalseatTime: None loggers:mylogger:level: DEBUGhandlers: [console,trfhandler]propagate: notrfLogger.py 封装日志模块使用dictConfig()读取日志配置文件以完成日志配置 # -*- coding:utf-8 -*- import logging.config import yaml import osclass Logger():def __init__(self,logger_name):self.logger_name logger_namecur_dir os.path.dirname(__file__)log_conf os.path.join(cur_dir, logconf, trflog.yaml)with open(log_conf, r, encodingutf8) as f:config yaml.safe_load(f.read())logging.config.dictConfig(config)def logger(self):logger logging.getLogger(self.logger_name)return loggermain.py 主程序测试日志功能 # -*- coding:utf-8 -*- import logging from config.trfLogger import Logger import timemlogger Logger(mylogger).logger()for i in range(10):mlogger.info(fMessage no. {i 1})time.sleep(1)运行main.py程序输出 参考资料 using-a-rotator-and-namer-to-customize-log-rotation-processing customizing-handlers-with-dictconfig logging-config-dict-externalobj
http://www.yutouwan.com/news/123146/

相关文章:

  • 郑州巩义网站建设百度霸屏推广一般多少钱
  • 深圳专业o2o网站设计公司电子商务网站建设知识点总结
  • 大连零基础网站建设教学服务普宁网站建设公司
  • 运城手机网站建设dw怎么制作网页教程
  • 网站建设资料 优帮云郑州做网站和推广哪家好
  • 网站开发意义长沙网站seo分析
  • 淘宝网站可以做百度快照吗网站信用认证可以自己做吗
  • 网站策划与网页设计长沙手机网站开发
  • 手机微信网站怎么做的好处搭建网上商城
  • 有哪些ui的设计网站蜘蛛搜索引擎
  • 网站排名优化服务公司中国跨境电商前三名
  • seo网站计划书电子商务网站发展建设
  • h5网站模板源码建设网站费用一般多少
  • 福州网站制作公司营销wordpress tag 列表
  • 南昌网站建设优化公司排名电子商务论文网站建设
  • 做直播教程的网站推广普通话黑板报内容
  • 佛山市网站建站网站win8 metro风格网站后台管理模板
  • 网站建设七个步骤凡科活动不良记录多久解除
  • linux做网站服务器吗wordpress绑定手机号
  • 服装微信商城网站建设公司介绍怎么写
  • 开发手机端网站模板手机端是什么
  • 网站开发最快的语言wordpress postname
  • 做网站最大的公司郑州最新出入通知
  • 最受欢迎的wordpress主题廊坊企业网站排名优化
  • 做国外直播网站成都网站优化维护
  • 电商网站制作在线直播系统开发
  • 做试玩网站推广展示类网站
  • 珠宝网站制作的理念如何向google提交网站
  • 手机网站设计公司可去亿企邦火车头wordpress 5.1
  • wordpress自定义站点wordpress cms模板制作