python---日志模块log.py

在写自动化测试脚本的时候,使用的日志模块。

# -*- coding:utf-8 -*-
import logging
import os
# from utils import getcwd


# log_path = os.path.dirname(getcwd.get_cwd())

log_path = './logs/log沙盒'
class Logger:
    def __init__(self,loggername):

        #创建一个logger
        self.logger = logging.getLogger(loggername)
        self.logger.setLevel(logging.DEBUG)

        #创建一个handler,用于写入日志文件
        # log_path = os.path.dirname(getcwd.get_cwd())+"/logs/" # 指定文件输出路径,注意logs是个文件夹,一定要加上/,不然会导致输出路径错误,把logs变成文件名的一部分了
        logname = log_path + '.log' #指定输出的日志文件名
        fh = logging.FileHandler(logname,encoding = 'utf-8')  # 指定utf-8格式编码,避免输出的日志文本乱码
        fh.setLevel(logging.DEBUG)

        #创建一个handler,用于将日志输出到控制台
        ch = logging.StreamHandler()
        ch.setLevel(logging.DEBUG)

        # 定义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 get_log(self):
    #   """定义一个函数,回调logger实例"""
    #     return self.logger
    def get_log(self):
        return self.logger

if __name__ == '__main__':
    t = Logger("hmk").get_log().debug("User %s is loging" % 'jeck')

在需要打印日志的地方,调整为以下代码,不要忘记导入。

from utills.loger import Logger
class Feed():
    def __init__(self):
        self.logger = Logger(__name__)


    def create_sign(self,options):
        del options['sign']
        sorted_options = [(k, options[k]) for k in sorted(options)]
        sign_parts = []
        for k,v in sorted_options:
            sign_parts.append('{}={}'.format(k, urllib.parse.quote_plus(str(v))))
        s = '&'.join(sign_parts)
        token = '此处不可泄漏'
        s =  s + '&token=' + token
        k = parse.unquote(s)
        sign = hashlib.md5(bytes(k,'utf-8')).hexdigest()
        # sign = hashlib.md5(s.encode("utf-8")).hexdigest()
        return sign


    def get_response(self,url,options):
        request_url = url + urlencode(options)
        new_url = parse.unquote_plus(request_url)
        # print('request_url为:', new_url)
        response = requests.get(new_url)
        return json.dumps(response.json(), indent=2, sort_keys=False, ensure_ascii=False)



    def run(self,url,options):
        options['timestamp'] = int(time.time())
        sign = self.create_sign(options)
        options['sign'] =sign
        response_str = self.get_response(url,options)
        self.logger.get_log().debug('请求URL为:%s,\n\t请求参数为:%s,\n\t响应参数为:\n\t%s\n\t' % (url, options, response_str))  # 输出接口响应内容
        return response_str


if __name__ == '__main__':
    feed = Feed()

代码有点low,不过在努力中。此处有烟花。。。。。

猜你喜欢

转载自blog.csdn.net/Mojitoice/article/details/98496762