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()

运行结果:

控制台:

Python+Selenium进阶版(八)- Python自定义封装一个简单的Log类

 文件:

Python+Selenium进阶版(八)- Python自定义封装一个简单的Log类

Python+Selenium进阶版(八)- Python自定义封装一个简单的Log类

相关推荐