zoukankan      html  css  js  c++  java
  • python+selenium之自定义封装一个简单的Log类

    python+selenium之自定义封装一个简单的Log类

    一、 问题分析:

    我们需要封装一个简单的日志类,主要有以下内容:

    1. 生成的日志文件格式是 年月日时分秒.log

    2. 生成的xxx.log文件存储在项目Logs文件夹下

    3. 这个日志类,支持INFO,ERROR两种日志级别

    4. 日志里,每行日志输出,时间日期+执行类名称+日志级别+日志描述

    二、解决问题思路:

    1. 在根目录下新建一个Logs的文件夹,如何获取这个Log的相对路径。

    2. 日志的保存命名,需要系统时间,前面也介绍过时间格式化输出

    3. Python中有一个logging模块来支持我们自定义封装一个新日志类。

    4. 在脚本里,初始化一个日志类的实例对象,然后去控制输出INFO还是ERROR日志信息。

    三、logger.py文件代码如下所示

    #coding:utf-8

    import os

    import logging

    import time

    class Logger(object):

        def __init__(self,logger):

            #创建一个logger

            self.logger=logging.getLogger(logger)#进行初始化

            self.logger.setLevel(logging.DEBUG)#日志等级为debug

            #创建一个handler,用于写入日志文件

            tm=time.strftime('%Y%m%d%H%M',time.localtime())  #格式化时间,按照 201712211152 打印

            log_path=os.path.dirname(os.path.abspath('.'))+'/pro1/Logs/'

            log_name = log_path + tm + '.log'

            fh=logging.FileHandler(log_name)

            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添加handler

            self.logger.addHandler(fh)

            self.logger.addHandler(ch)

        def getLog(self):

            return self.logger

    四、logging模块的API

    1. logging.getLogger([name])

    返回一个logger实例,如果没有指定name,返回root logger。

    只要name相同,返回的logger实例都是同一个而且只有一个,即name和logger实例是

    一一对应的。这意味着,无需把logger实例在各个模块中传递。只要知道name,就能得到

    同一个logger实例

    2. Logger.setLevel(lvl)

    设置logger的level, level有以下几个级别:

    NOTSET < DEBUG < INFO < WARNING < ERROR < CRITICAL

    如果把looger的级别设置为INFO, 那么小于INFO级别的日志都不输出, 大于等于INFO级别的日志都输出

    3. Logger.addHandler(hdlr)

    logger可以雇佣handler来帮它处理日志, handler主要有以下几种:

    StreamHandler: 输出到控制台

    FileHandler:   输出到文件

    handler还可以设置自己的level以及输出格式。

    五、测试代码

    1.测试脚本如下所示,文件名为test_log.py

    #coding:utf-8

    from pro1.logger import Logger

    from selenium import webdriver

    import time

    mylogger=Logger(logger='TestLog').getLog()

    class TestLog(object):

        def printLog(self):

            driver=webdriver.Firefox()

            mylogger.info("打开浏览器")

            driver.maximize_window()

            mylogger.info("窗口最大化")

            driver.implicitly_wait(8)

            driver.get("https://www.baidu.com/")

            mylogger.info("打开百度首页")

            time.sleep(2)

            mylogger.info("暂停2秒")

            driver.quit()

            mylogger.info("关闭并退出浏览器")

    test=TestLog()

    test.printLog()

    详情参考:http://blog.csdn.net/u011541946/article/details/70198676

  • 相关阅读:
    WIN10下Java环境变量配置
    Oracle中用户的创建和权限设置
    Oracle表空间的创建与删除
    设置RHEL-7.0的运行级别
    发布项目到Tomcat(域名直接访问)
    centos7 打开80端口(网络搜集)
    MySql字符乱码问题解决(真)
    centos7安装workbench
    centos7添加Windows引导
    centos7下yum安装mysql(转)
  • 原文地址:https://www.cnblogs.com/Rita-LJ/p/8125791.html
Copyright © 2011-2022 走看看