一: 封装log模块, 在自动化测试中日志输出,在配置文件中配置需输出的位置 , 1为输出, 0不输出。
1,console_output_on = 1 输出到控制台
2,file_output_on =1 输出到txt文件中
configparser 模块可以从配置文件中获取数据
Log.py
1 import logging 2 import sys 3 import configparser 4 5 class Log: 6 def __init__(self): 7 pass 8 9 def __new__(cls): 10 if not hasattr(cls,‘instance‘): 11 cls._instance = super(Log, cls).__new__(cls) 12 conf = configparser.ConfigParser() 13 conf.read(‘log_config.ini‘,encoding=‘utf-8‘) 14 cls._instance.level = conf.get(‘logging‘,‘level‘) 15 cls._instance.name = conf.get(‘logging‘, ‘logger_name‘) 16 cls._instance.path = conf.get(‘logging‘, ‘file_path‘) 17 cls._instance.formatter = conf.get(‘logging‘, ‘formatter‘) 18 cls._instance.format = cls._instance.formatter.replace(‘|‘, ‘%‘) 19 cls._instance.console_output_on = conf.getint(‘logging‘, ‘console_output_on‘) 20 cls._instance.file_output_on = conf.getint(‘logging‘, ‘file_output_on‘) 21 cls._instance.logger =logging.getLogger(‘test‘) 22 cls._instance.log() 23 return cls._instance 24 25 26 def get_log(self): 27 return self.logger 28 29 30 def log(self): 31 if self.console_output_on == 1: 32 self.logger.setLevel(self.level) 33 # 设置log.txt路径 34 #设置控制台输出日志 35 sh = logging.StreamHandler(sys.stderr) 36 # 设置格式 37 formatter = logging.Formatter(self.format) 38 sh.setFormatter(formatter) 39 self.logger.addHandler(sh) 40 41 if self.file_output_on==1: 42 self.logger.setLevel(self.level) 43 # 设置log.txt路径 44 # 设置文件输入日志地址 45 #最多备份5个日志文件,每个日志文件最大10M,这个Handler类似于上面的FileHandler,但是它可以管理文件大小。 46 # 当文件达到一定大小之后,它会自动将当前日志文件改名,然后创建 一个新的同名日志文件继续输出 47 #fh = logging.RotatingFileHandler(self.path,maxBytes=10*1024*1024,backupCount=5) 48 fh = logging.FileHandler(self.path) 49 # 设置格式 50 formatter = logging.Formatter(self.format) 51 fh.setFormatter(formatter) 52 self.logger.addHandler(fh) 53 return self.logger 54 55 log = Log().get_log()
二: 配置文件设置
1 [logging] 2 level=DEBUG 3 logger_name=test 4 file_path=H:\pycharm\untitled2\python_study\log\log.txt 5 formatter=[|(asctime)s]:|(filename)s [line:|(lineno)d] |(levelname)s : |(message)s |(funcName)s 6 console_output_on=1 7 file_output_on=1 8 9 [level] 10 日志等级: debug, info,warning,error,critical
三: 测试文件
1 from log.Log import * 2 import codecs 3 log.info(‘this is testing‘) 4 5 def fun(x,y): 6 """随意测试""" 7 return x/y 8 9 try: 10 fun(2,0) >0 11 except Exception as e: 12 log.error(‘分母不能为0 {}‘.format(e))
四:日志输出 log.txt
五: 目录
时间: 2024-12-16 22:44:53