2.7 日志logging类封装

直接扔代码,自己看咯,都有注释:
1. 配置文件中,存放日志相关信息: 等级,渠道(日志保存在文件中还是输出在控制台),日志文件名称,测试人员信息,如下:
在这里插入图片描述
2. 自定义日志类

from common.read_config import *
import logging

"""获取日志配置信息"""
log_set = my_config.read_data_by_one_section_name('log_set')  # 获取测试数据文件的文件名


class MyLog:

    def __new__(cls, level, channel, logname, tester='Lujier'):
        # 创建自己的日志收集器,my_log当作一个对象返回
        dir_path = os.path.dirname(os.path.dirname(__file__))
        log_path = os.path.join(dir_path, 'logs', logname)
        my_log = logging.getLogger(tester)
        # 创建一个日志输出渠道(输出到控制台)
        my_log.setLevel(level)  # 日志输出等级
        output_type = ''
        if channel == 'CONSOLE':
            output_type = logging.StreamHandler()  # 输出到控制台

        else:
            output_type = logging.FileHandler(log_path, encoding='UTF-8')  # 输出到控制台

        output_type.setLevel(level)

        # 将输出渠道添加到日志收集器中
        my_log.addHandler(output_type)  # 将输出渠道添加到日志收集器中
        my_log.addHandler(output_type)

        # 设置日志输出格式
        ft = '%(asctime)s-->[%(filename)s-->%(funcName)s-->line:%(lineno)d] - %(levelname)s: %(message)s'
        ft = logging.Formatter(ft)
        output_type.setFormatter(ft)
        output_type.setFormatter(ft)

        return my_log


my_log = MyLog(**log_set)  # 创建一个日志对象

注意: ft中%各自代表含义如下:
‘’’
%(name)s:收集器名称
%(levelno)s: 打印日志级别的数值
%(levelname)s: 打印日志级别名称
%(pathname)s: 打印当前执行程序的路径,其实就是sys.argv[0]
%(filename)s: 打印当前执行程序名
%(funcName)s: 打印日志的当前函数
%(lineno)d: 打印日志的当前行号
%(asctime)s: 打印日志的时间
%(thread)d: 打印线程ID
%(threadName)s: 打印线程名称
%(process)d: 打印进程ID
%(message)s: 打印日志信息
“”"
工作中常用
format=’%(asctime)s - [%(filename)s–>line:%(lineno)d] - %(levelname)s: %(message)s’

此时进行日志输出时,如下:
在这里插入图片描述
运行之后,查看日志文件:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值