Python+Selenium进阶版(八)- Python自定义封装一个简单的Log类
目标:如何写一个Python日志类,用来输出不同级别的日志信息到本地文件夹下的日志文件里。
练习场景:
我们需要封装一个简单的日志类,主要有以下内容:
1.生成的日志文件格式是 年月日分秒.log
2.生成的XXX.log文件存储在项目根目录下Logs文件夹下
3.这个日志类,支持INFO,ERROR两种日志级别
4.日志里,每行日志输出,时间日期+执行类名称+日志级别+日志描述
解决思路:
1.在根目录下新建一个Logs的文件夹,获取这个Log的相对路径;
2.日志的保存命名,需要系统时间;
3.Python中有一个logging模块来支持我们自定义封装一个新日志类;
4.在脚本里,初始化一个日志类的实例对象,然后控制输出INFO还是ERROR日志信息。
自定义日志类封装如下:logger.py ,新建在test1包下:
import logging import os.path import time class Logger(object): def __init__(self,logger): """ 指定保存日志的文件路径,日志级别,以及调用文件 将日志存入到指定文件中 :param logger: """ # 创建一个logger self.logger = logging.getLogger(logger) self.logger.setLevel(logging.DEBUG) # 创建一个handler,用于写入日志文件 rq = time.strftime(‘%Y%m%d%H%M‘,time.localtime(time.time())) log_path = os.path.dirname(os.getcwd()) + ‘/Logs/‘ log_name = log_path + rq + ‘.log‘ fh = logging.FileHandler(log_name,encoding=‘utf-8‘) fh.setLevel(logging.INFO) # 再创建一个handler,用于输出到控制台 ch = logging.StreamHandler() ch.setLevel(logging.INFO) # 定义handler的输出格式 formatter = logging.Formatter(‘%(asctime)s - %(name)s - %(levelname)s - %(message)s‘) fh.setFormatter(formatter) ch.setFormatter(formatter) # 给logger添加handle self.logger.addHandler(fh) self.logger.addHandler(ch) def getlog(self): return self.logger
test_log.py代码:
# coding = utf-8 import time from selenium import webdriver from test1.logger import Logger mylogger = Logger(logger=‘TestMylog‘).getlog() class TestMyLog(object): def print_log(self): driver = webdriver.Chrome() mylogger.info("打开浏览器。") driver.maximize_window() mylogger.info("最大浏览器窗口。") driver.implicitly_wait(8) driver.get("https://www.baidu.com") mylogger.info("打开百度首页。") time.sleep(1) mylogger.info("暂停一秒。") driver.quit() mylogger.info("关闭并退出浏览器。") testlog = TestMyLog() testlog.print_log()
运行结果:
控制台:
文件:
相关推荐
zhuxue 2020-10-14
zhangbingb 2020-09-21
HeronLinuxampARM 2020-09-14
美丽的泡沫 2020-09-08
goodstudy 2020-08-19
luvhl 2020-08-17
littleFatty 2020-08-16
gamestart0 2020-08-15
URML 2020-08-15
sfkong 2020-08-02
82941732 2020-07-27
偏头痛杨 2020-07-18
timewind 2020-07-04
89407707 2020-06-27
xiaoxiaoCNDS 2020-06-26
lyjava 2020-06-26
运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算。以上实例中 7、5 和 12 是操作数。关系运算符用于计算结果是否为 true 或者 false。逻辑运算符用于测定变量或值之间的逻辑。
ChaITSimpleLove 2020-06-25
Strongding 2020-06-25