首页 > 其他分享 >Selenium37-加入日志

Selenium37-加入日志

时间:2022-12-27 20:01:33浏览次数:44  
标签:Selenium37 logging log 加入 message self 日志 logger

日志的概念

日志是记录系统运行过程中各种重要信息的文件,在系统运行过程中由各进程创建并记录

日志的作用

  • 记录系统的运行过程及异常信息
  • 调试
  • 定位错误
  • 数据分析

运行日志

运行日志的记录包括:
(1)启动成功或失败
(2)定位成功或失败
(3)操作成功或失败
(4)检查成功或失败
(5)资源加载失败
(6)警告信息
(7)超时
(8)数据读取成功或失败
(9)正常操作过程的步骤顺序

日志级别

  • critical 严重的错误,这表明程序本身可能无法继续运行
  • error 严重的问题,软件没能执行一些功能
  • warning 一个迹象表明,一些意想不到的事情发生,或表明一些问题在不久的将来,这个软件还能按预期工作
  • info 确认一切按预期运行
  • debug 打印全部的日志,详细的信息,通常只出现在诊断问题上

级别排序:critical >error>warning>info>debug

logging模块

  • python程序里自带的logging模块
  • logging模块可以记录日志到控制台或日志文件里,比print更好的输出信息,控制日志级别来控制过滤掉不需要看的信息。
  • logging模块输出日志到控制台和日志文件里的步骤
    • 创建一个日志器对象(Logger)
    • 创建一个日志句柄(Handler),用于输出到控制台
    • 再创建一个日志句柄(Handler),用于输出到文件
    • 添加这两个句柄到日志器对象(Logger)里
    • 调用日志器对象(Logger)方法完成日志记录

日志模块四大组件

四大组件关系

  • 日志器(logger)需要通过处理器(handler)将日志信息输出到目标位置,例如文件、网络等
  • 不同的处理器(handler)可以将日志输出到不同的位置
  • 日志器(logger)可以设置多个处理器(handler)将同一条日志记录输出到不同的位置
  • 每个处理器(handler)都可以设置自己的过滤器(filter)实现日志过滤
  • 每个处理器(handler)都可以设置自己的格式器(formatter)实现同一条日志以不同的格式输出到不同的地方

日志常用的格式

定义日志代码

# coding:utf-8
# 导入模块
import logging,time,os
# 定义日志保存本地的路径
# log_path = "D:\\test\\newp\\report"
log_path="../logs/"


class MyLog:
    # 定义日志工具类构造方法
    def __init__(self):
        # 文件的命名
        self.logname = os.path.join(log_path, '%s.log'%time.strftime('log%Y%m%d'))
        self.logger = logging.getLogger()
        self.logger.setLevel(logging.DEBUG)
        # 日志输出格式
        self.formatter = logging.Formatter('[%(asctime)s] -  %(filename)s[line:%(lineno)d] - fuc:%(funcName)s- %(levelname)s:  %(message)s')

    def writelog(self, level, message):
        # 创建一个FileHandler,用于写到本地
        fh = logging.FileHandler(self.logname, 'a',encoding='utf-8')  # 追加模式
        fh.setLevel(logging.DEBUG)
        fh.setFormatter(self.formatter)
        self.logger.addHandler(fh)

        # 创建一个StreamHandler,用于输出到控制台
        ch = logging.StreamHandler()
        ch.setLevel(logging.DEBUG)
        ch.setFormatter(self.formatter)
        self.logger.addHandler(ch)

        if level == 'info':
            self.logger.info(message)
        elif level == 'debug':
            self.logger.debug(message)
        elif level == 'warning':
            self.logger.warning(message)
        elif level == 'error':
            self.logger.error(message)
        # 这两行代码是为了避免日志输出重复问题
        self.logger.removeHandler(ch)
        self.logger.removeHandler(fh)
        # 关闭打开的文件
        fh.close()

    def info(self, message):
        self.writelog('info', message)

    def debug(self, message):
        self.writelog('debug', message)

    def warning(self, message):
        self.writelog('warning', message)

    def error(self, message):
        self.writelog('error', message)

log = MyLog()
if __name__ == "__main__":
   log.info("---测试开始----")
   log.info("输入密码")
   log.warning("----测试结束----")

导入日志模块

  • 在Selenium基础模块里调用日志模块记录日志信息:
    from utils.logger import log

给登录模块测试代码增加日志

查看日志文件

logs目录中 log年月日.log

标签:Selenium37,logging,log,加入,message,self,日志,logger
From: https://www.cnblogs.com/sean-test/p/17008868.html

相关文章

  • 日志
    日志 控制输出的内容 控制输出的位置 ​ 导入log4j-1.2.17.jar log4j  .jar+.properties配置文件 logback直接导入log4j-1.2.17.jar.properties配置文件......
  • 日志切面
    @Aspect@ComponentpublicfinalclassLogAspect{privatestaticfinalLoggerLOGGER=LoggerFactory.getLogger(LogAspect.class);/***线程本......
  • Logback日志框架
    日志框架日志技术的概述生活中的日志:生活中的日志就好比日记,可以记录生活的点点滴滴程序中的日志:程序中的日志可以用来记录程序运行过程中的信息,并可以进行永久储存......
  • JVM日志分析及工具
    JVM的GC日志的主要参数包括如下几个:-XX:+PrintGC输出GC日志-XX:+PrintGCDetails输出GC的详细日志-XX:+PrintGCTimeStamps输出GC的时间戳(以基准时间的形式)-XX:+Print......
  • jq筛选日志
     原始日志:{"code":1,"msg":"ok","data":{"rows":[{"hostName":"a04_valchainnode_service_pro_v_tky","packMeta":"MXxNVFkzTVRNMk5qRTBOREEzTkRrME1UYzNOQT09fDF8MA","......
  • log4j 2_程序日志_监控程序运行状态
    2015年5月停止了对于log4j的更新。log4j2的配置文件不再支持properties文件格式,推荐使用xml文件配置。  一、日志级别fatal:致命错误,在catch块中使用。err......
  • 【转】linux crontab使用及日志查看
     转,原文:https://blog.csdn.net/ximi_xuexi/article/details/122544321---------------------------------------- 命令:crontab-e用于编辑定时任务;定时任务编辑......
  • 一文学会浏览器插件(加入光荣的进化吧)(一文晋级璀璨钻石)(本文不含知识诅咒)
    都2023年了,你还不会开发浏览器插件?注意:此教程针对chrome和chromium内核的浏览器制定的,且仅适用于前端开发者在chrome地址栏输入chrome://extensions/,就进入了谷歌浏览......
  • logback将日志写入到ELK
    springboot中使用logback将日志写入到ELK平台  原文:http://www.tingcream.com/blogArticle/detail/b9ab76ffaeb547388522c9b982e6f419ELK 是由elasticsearch、logst......
  • golang入门项目—日志收集
    传统ELK架构的日志收集:存在的问题:Logstash耗资源较大,运行占用CPU和内存高。另外没有消息队列缓存,存在数据丢失隐患。适用于小规模的集群使用。第二种架构:位于各个节点上......