美文网首页
10.接口自动化之工具封装004:python 日志封装

10.接口自动化之工具封装004:python 日志封装

作者: 小小一颗卤蛋 | 来源:发表于2024-03-24 18:09 被阅读0次

    log技术

    日志的作用:可以分析问题,协助找到bug,更容易找到报错信息,定制化的输出一些需要查看的数据信息,也可以为性能测试分析提供一些可用信息。
    日志的查看:
    1、直接打开 xxx.log文件查看
    2、在docker(docker logs -f 容器id),k8s(kubectl logs -f pod名字)集群
    3、以web页面形式体现

    日志输出形式如下:

    2024-04-02 21:36:22,baseAPI(line:50),INFO|模块名:Login
    2024-04-02 21:36:22,baseAPI(line:50),INFO|接口名:login
    2024-04-02 21:36:22,baseAPI(line:50),INFO|请求url:http://121.41.39:8082/account/sLogin
    

    日志编写以及参数如下:

    logging.basicConfig(format='%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s',
                    filename=f'../logs/{datetime.datetime.now().strftime("%Y-%m-%d-%H.%M.%S")}.txt',
                    level=logging.INFO,
                    filemode='a')
        return logging
    

    logging.basicConfig函数各参数
    format:指定输出的格式和内容,format可以输出很多有用的信息
    filename:指定的日志文件名称
    filemode:和file函数意义相同,指定日志文件的打开模式,'w'或者'a'

    日志输出常用的参数: 日志常见参数

    日志封装

    from configparser  import  ConfigParser
    from loguru import logger
    from utils.handle_path import log_path, config_path  
    from time import strftime
    import os
    class MyLog():
        __instance = None  # 单例实现
        __call_flag = True  # 控制init调用,如果调用过就不再调用
    
        def __new__(cls, *args, **kwargs):
            if not cls.__instance:
                cls.__instance = super().__new__(cls)
            return cls.__instance
    
        def get_log(self):
            if self.__call_flag:  # 看是否调用过----日志设置操作---全局操作--一次就够了
                __curdate = strftime('%Y%m%d-%H%M%S')
                cfg = ConfigParser()
                cfg.read(os.path.join(config_path,'loguru.ini'), encoding='utf-8')
                logger.remove(handler_id=None)  # 关闭console输出
                #把loguru.ini的配置文件生效!!!
                logger.add(os.path.join(log_path,'waimai_') + __curdate + '.log', encoding='utf8', # 日志存放位置
                           retention=cfg.get('log', 'retention'),  # 清理
                           rotation=cfg.get('log', 'rotation'),  # 循环 达到指定大小后建立新的日志
                           format=cfg.get('log', 'format'),  # 日志输出格式
                           compression=cfg.get('log', 'compression'),  # 日志压缩格式
                           level=cfg.get('log', 'level'))  # 日志级别
                self.__call_flag = False  # 如果调用过就置为False
            return logger
    
    
    log = MyLog().get_log() # 如果这个  handle_log 别人import   这句话一定会被执行
    
    if __name__ == '__main__':
        log.error('testing')
        log.info('hello')
    

    loguru.ini的配置文件(放到configs文件下)

    [log]
    format = {time:YYYY-MM-DD HH:mm:ss},{module}(line:{line}),{level}|{message}
    level = INFO
    rotation = 10 MB
    retention = 2 days
    compression = zip
    

    相关文章

      网友评论

          本文标题:10.接口自动化之工具封装004:python 日志封装

          本文链接:https://www.haomeiwen.com/subject/pbakfdtx.html