码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2020-04-08 16:18:53      阅读:91      评论:0      收藏:0      [点我收藏+]

标签:日志   def   路径   formatter   baidu   自定义日志   time()   初始化   保存日志   

  目标:如何写一个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类

标签:日志   def   路径   formatter   baidu   自定义日志   time()   初始化   保存日志   

原文地址:https://www.cnblogs.com/zhaocbbb/p/12660461.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!