1. 程式人生 > >自動化框架--log日誌封裝

自動化框架--log日誌封裝

封裝 .config import format) eve cal aps spl txt文件

一: 封裝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()
View Code

二: 配置文件設置

技術分享
 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
View Code

三: 測試文件

技術分享
 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))
View Code

四:日誌輸出 log.txt

技術分享

五: 目錄

技術分享

自動化框架--log日誌封裝