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

网站备案通过什么可以备案网站seo优化方法

网站备案通过什么可以备案,网站seo优化方法,花都营销型网站建设,wordpress hook 数据库文章目录 一、基于 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.zqtcl.cn/news/579780/

相关文章:

  • 公司外文网站制作河南住房和城乡建设厅网站
  • 东莞做网站公司有哪些代码网站推荐
  • 棋类游戏网站开发网站首页顶部图片尺寸
  • 工信部如何查网站备案大连网络推广广告代理
  • 网站建设基本流程心得wordpress首页截断
  • 网站包括哪些内容网站开发的相关技能
  • 百度竞价 百度流量 网站权重qq推广
  • 重庆网站建设总结WordPress简单百度站长插件
  • pc网站转换成微网站工作室推广网站
  • 嘉兴优化网站公司做水果生意去哪个网站
  • 青岛知名网站建设公司排名wordpress商场插件
  • 设计网站猪八戒自己制作logo免费生成器
  • 深圳万齐创享网站建设网站建设基本教程
  • 聊城做网站信息建设工程合同可以分为
  • 网站设计 注意做筹款的网站需要什么资质
  • 家居网站建设费用国土局网站建设经验
  • 企业网站开发教程网站建设更改
  • 违法网站怎么做安全wordpress自定义应用
  • 四平英文网站建设wordpress添加特效
  • 如何在手机上制作网站企业网站 微博模块
  • 网站内容规范网站建设建设公司哪家好
  • 深圳网站制作公司地址如何制作手机版网站
  • 深圳定制网站制作报价网络交易平台
  • 鞍山网站制作报价wordpress手机客户端端
  • 开发触屏版网站标签苏州沧浪区做网站的
  • 网站接入商钓鱼网站链接怎么做
  • 建设部机关服务中心网站网站建设维护费 会计科目
  • 网站解析后怎么解决方法淘宝网站建设方案模板
  • 淘宝客可以自己做网站推广吗营销网络建设怎么写
  • 上海高端网站制作广告设计培训课程