在发送请求的时候,需要添加对应的日志记录,所以在requests库中封装日志功能。
日志需要在控制台中输出出来的同时又能保存在文件中。

封装日志

日志文件中产生的日志 需要存放在 项目的根目录下 logs 文件下。

utils/mylogger.py

  1. """
  2. 定义日志文件
  3. """
  4. import logging
  5. # 配置logging 设置日志记录器的名字
  6. logger = logging.getLogger("apitesting")
  7. # 配置logger的级别
  8. logger.setLevel(logging.DEBUG)
  9. # 配置通用的日志格式 时间 日志级别 记录器名字 日志信息
  10. format = logging.Formatter('%(asctime)s %(levelname)s %(name)s %(message)s')
  11. # 配置控制台打印
  12. sh = logging.StreamHandler()
  13. # 设置日志级别
  14. sh.setLevel(logging.DEBUG)
  15. # 设置日志格式
  16. sh.setFormatter(format)
  17. # 将控制台打印 添加到logger中
  18. logger.addHandler(sh)
  19. # 日志文件按天划分,每次执行的时候,比如今天是 2022-2-13, 创建目录 2022-2 表示2022年2月份日志
  20. # 在目录中创建文件 13.log 表示13日的日志
  21. import time
  22. import os
  23. # 年 - 月
  24. dir = time.strftime("%Y-%m")
  25. file = time.strftime("%d") # 日
  26. print(dir,file)
  27. # 创建目录 设置logs 目录
  28. logs = os.path.join(os.path.dirname(os.path.dirname(__file__)),'logs')
  29. if not os.path.exists(logs):
  30. os.mkdir(logs)
  31. # 拼接日志目录和 年-月 的目录
  32. log_dir= os.path.join(logs,dir)
  33. if not os.path.exists(log_dir):
  34. os.mkdir(log_dir)
  35. # 日志文件 拼接
  36. log_file = os.path.join(log_dir,file+".log")
  37. # 配置文件存储
  38. fh = logging.FileHandler(filename=log_file, encoding='utf8')
  39. # 日志文件的 级别
  40. fh.setLevel(logging.DEBUG)
  41. # 日志文件的内容格式
  42. fh.setFormatter(format)
  43. # 将日志文件配置添加到logger
  44. logger.addHandler(fh)
  45. if __name__ == '__main__':
  46. logger.info("hahahah")

封装myrequests

将日志功能放入到自己定义的请求库中。
utils/myrequests.py

  1. import requests
  2. from utils.mylogger import logger
  3. class MyRequests:
  4. def __init__(self):
  5. self.logger = logger
  6. def do_requests(self, method, url, params=None, data=None, json=None, **kwargs):
  7. """
  8. 自定义请求
  9. :param method: 请求方法
  10. :param url: 请求的url
  11. :param params: get请求参数
  12. :param data: post请求参数
  13. :param json: post 请求参数
  14. :param kwargs: 其他参数
  15. :return:
  16. """
  17. if method == 'get':
  18. # 添加日志
  19. self.logger.debug(f"发送get请求,请求地址:{url},请求参数: {params}")
  20. # 调用requests get 请求
  21. r = requests.get(url, params=params, **kwargs)
  22. # 添加日志
  23. self.logger.debug(f"服务器返回结果:{r.text}")
  24. return r
  25. elif method == "post":
  26. self.logger.debug(f'发送post请求,请求地址:{url},请求数据:{json}, {data}')
  27. r = requests.post(url, data=data, json=json, **kwargs)
  28. self.logger.debug(f'服务器返回结果:{r.text}')
  29. return r
  30. if __name__ == '__main__':
  31. # 模拟发送请求
  32. req = MyRequests()
  33. req.do_requests(method='get', url="http://47.100.175.62:3000/api/v1/topics")