python中的logging模块,python logging 颜色

  python中的logging模块,python logging 颜色

  大家好,本篇文章主要讲的是大蟒自定义封装带颜色的记录模块,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下

  大蟒自定义封装带颜色的记录模块

  自己在搭建大蟒接口自动化框架分享一些内容过程中想自己封装一个记录器方法根据记录进行二次封装代码如下

  导入日志记录

  导入操作系统

  导入时间

  导入颜色日志

  从日志记录.处理程序导入旋转文件处理器

  # 创建文件目录

  cur _ path=OS。路径。dirname(OS。路径。真实路径(_ _ file _ _)# log _ path是存放日志的路径

  log _ path=OS。路径。加入(OS。路径。目录名(当前路径),日志)

  如果不是OS。路径。存在(log _ path):操作系统。mkdir(log _ path)#如果不存在这个日志文件夹,就自动创建一个

  # 修改原木保存位置

  时间戳=时间。strftime( % Y-% m-% d ,time.localtime())

  日志文件名= % s . log %时间戳

  日志文件路径=os.path.join(日志文件路径,日志文件名称)

  # 定义不同日志等级颜色

  log_colors_config={

  调试: 粗体_青色,

  信息: 粗体_绿色,

  警告 : 粗体_黄色,

  错误: 粗体_红色,

  关键 : 红色:

  }

  类记录器(日志记录。记录器):

  def __init__(self,name,level=DEBUG ,file=None,encoding=utf-8):

  超级()。__init__(名称)

  自编码=编码

  self.file=file

  自我水平=水平

  # 针对所需要的日志信息手动调整颜色

  formatter=colorlog .彩色格式器(

  %(log _ color)s %(级别名称)1.1s %(ASC时间)s %(重置)s %(message _ log _ color)s %(级别名称)-8s %(重置)s %(

  log_color)s[%(文件名)s%(重置)s:%(log_color)s%(模块)s%(重置)s:%(log_color)s%(函数名)s%(

  reset)s :%(log _ color)s %( 行号)d]%(reset)s-%(白色)s %(消息)s ,

  重置=真,

  log_colors=log_colors_config

  secondary_log_colors={

  消息 : {

  调试 : 蓝色,

  信息 : 蓝色:

  警告 : 蓝色,

  错误 : 红色,

  关键: bold_red

  }

  },

  style="% "

  ) # 日志输出格式

  # 创建一个FileHandler,用于写到本地

  旋转文件处理程序=日志记录。经手人。旋转文件处理程序(文件名=日志文件路径,

  maxBytes=1024 * 1024 * 50,

  backupCount=5)

  旋转文件处理程序。设置格式化程序(格式化程序)

  旋转文件

  Handler.setLevel(logging.DEBUG)

   self.addHandler(rotatingFileHandler)

   # 创建一个StreamHandler,用于输出到控制台

   console = colorlog.StreamHandler()

   console.setLevel(logging.DEBUG)

   console.setFormatter(formatter)

   self.addHandler(console)

   self.setLevel(logging.DEBUG)

  logger = Logger(name=logfile_path, file=logfile_path)

  

  使用时我们只需要引入封装好的类就行 直观美丽大方~

  

# 引入封装好的logger模块

  from common.logger_handler import logger

  def physical_strength(self, abnormal):

   """兑换体力异常通用方法"""

   if self.attrs.__contains__(costType):

   attrs_Type = {

   "costType": abnormal,

   "count": self.attrs["count"]

   }

   response_Type = r().response(self.send_uid, self.code, self.event, attrs_Type)

   # 使用时直接调用logger.info()就行

   logger.info(f"physical_strength_{abnormal},response_Type:{response_Type}")

   assert response_Type["code"] != 0

   time.sleep(2)

   attrs_count = {

   "costType": self.attrs["costType"],

   "count": abnormal

   }

   response_count = r().response(self.send_uid, self.code, self.event, attrs_count)

   logger.info(f"physical_strength_{abnormal},response_count:{response_count}")

   assert response_count["code"] != 0

   time.sleep(2)

   attrs_all = {

   "costType": abnormal,

   "count": abnormal

   }

   response_all = r().response(self.send_uid, self.code, self.event, attrs_all)

   logger.info(f"physical_strength_{abnormal},response_all:{response_all}")

   assert response_all["code"] != 0

   time.sleep(2)

   else:

   attrs_count = {

   "count": abnormal

   }

   response_count = r().response(self.send_uid, self.code, self.event, attrs_count)

   logger.info(f"physical_strength_{abnormal},response_count:{response_count}")

   assert response_count["code"] != 0

   time.sleep(2)

  

  效果:按照 日期/时间/日志等级/文件名称/类/方法名称/代码行数展示(这里可以自己手动调整formatter参数 如果感觉展示太长的话)
%(levelno)s: 打印日志级别的数值
%(levelname)s: 打印日志级别名称
%(pathname)s: 打印当前执行程序的路径,其实就是sys.argv[0]
%(filename)s: 打印当前执行程序名
%(funcName)s: 打印日志的当前函数
%(lineno)d: 打印日志的当前行号
%(asctime)s: 打印日志的时间
%(thread)d: 打印线程ID
%(threadName)s: 打印线程名称
%(process)d: 打印进程ID
%(message)s: 打印日志信息

  

  避坑:不要用这种方式去调用日志等级方法 会出现日志打印定位路径错误 只能定位在log封装类当前方法下

  

 def debug(self, message):

   self.__console(debug, message)

   def info(self, message):

   self.__console(info, message)

   def warning(self, message):

   self.__console(warning, message)

   def error(self, message):

   self.__console(error, message)

  

  到此这篇关于python自定义封装带颜色的logging模块的文章就介绍到这了,更多相关python logging模块内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: