zoukankan      html  css  js  c++  java
  • 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()
    

      

    运行结果:

    控制台:

     文件:

  • 相关阅读:
    回顾2012
    静态变量与非静态变量的区别
    本地计算机的XXX服务启动后又停止了
    计算包含特殊字符的字符串的字符个数
    Convert与Parse的区别
    SPSS课程学习思路及流程
    市场分析与数据挖掘分别的分析流程
    用R做逻辑回归之汽车贷款违约模型
    用R去做文本处理
    SyntaxError: Missing parentheses in call to 'print
  • 原文地址:https://www.cnblogs.com/zhaocbbb/p/12660461.html
Copyright © 2011-2022 走看看