一、日志集成,为什么要写日志?
在公司开发的任何一个系统都会有日志设计,通过日志,把系统的行为记录并保存起来,一旦系统发生了一些问题便可以通过日志去分析问题发生在哪里,是因为什么原因发生的。同样,我们在设计测试框架的时候,也可以通过设计日志来记录框架的整个测试流程,一旦执行过程中出现异常,我们也能通过日志中记录的错误信息找到问题发生的症结。Python的logging模块,有关logging我们需要了解如下一些信息:
- 日志分为5个级别,分别是:
DEBUG、INFO、WARNING、ERROR、CRITICAL
,日志严重级别从左往右逐渐增加,一般在Python写日志系统时,我们对于普通的信息输出会订为INFO级别,对于异常信息,定位ERROR级别。 - 日志输出渠道有两个handler:
console(控制台)和file(指定文件)
- 日子输出可以指定格式:
formatter
- 日志输出完毕后,要移除handler,否则会导致日志输出重复
二、编写属于自己的日志系统My_Log
直接示范代码如下所示:
import logging
import time
class MyLog:
def my_log(self, msg, level):
# 1:设置日志生成器的名字,eg:test_api_log
logger = logging.getLogger("test_api_log")
# 2:设置输出什么级别的日志
logger.setLevel('DEBUG')
# 3:设置格式:创建日志格式对象,决定我们日志输出格式
formatter = logging.Formatter('%(asctime)s-%(levelname)s-%(filename)s-%(name)s-日志信息:%(message)s')
# 4:日志输出器 控制台 指定的文件
ch = logging.StreamHandler() # 渠道是指输出到控制台
ch.setLevel('DEBUG') # 只输出INFO以上的
ch.setFormatter(formatter)
# 5:日志文件名称按日期生成
now = time.strftime('%Y-%m-%d') # 获取当天的时间,时间生成格式为eg:2021-10-31
# now = time.strftime('%Y%m%d%H%M', time.localtime(time.time())) # 获取当天的时间,时间生成格式为eg:202110311251
path = "test_api_" + now + ".log" # 拼接路径
# 6:设置日志最终存放的地方
fh = logging.FileHandler(path, encoding='UTF-8')
fh.setLevel('DEBUG')
fh.setFormatter(formatter) # FileHandler对象自定义日志格式
# 7:对接
logger.addHandler(ch) # logger日志对象加载StreamHandler对象
logger.addHandler(fh) # logger日志对象加载FileHandler对象
if level == 'DEBUG':
logger.debug(msg)
elif level == 'INFO':
logger.info(msg)
elif level == 'WARNING':
logger.warning(msg)
elif level == 'ERROR':
logger.error(msg)
elif level == 'CRITICAL':
logger.critical(msg)
# 关闭渠道,作用:解决重复记录日志,eg:第一条记录写一次,第二条记录写两次,第三条记录写三次
logger.removeHandler(ch)
logger.removeHandler(fh)
def debug(self, msg):
self.my_log(msg, 'DEBUG') # 调用my_log函数
def info(self, msg):
self.my_log(msg, 'INFO')
def warning(self, msg):
self.my_log(msg, 'WARNING')
def error(self, msg):
self.my_log(msg, 'ERROR')
def critical(self, msg):
self.my_log(msg, 'CRITICAL')
if __name__ == '__main__':
my_logger = MyLog()
my_logger.info("test1")
my_logger.info("test2")
my_logger.info("test33")
三、执行测试,首先在控制台查看日志记录
生成的日志文件名称
然后是日志文件内容
注:
日志虽然说越详细越好,但是对于一些无关紧要的操作,我们其实是没必要做日志的,日志太多反而不好定位错误信息,因此一般做日志记录的都是一些比较核心,重要的操作,或者容易出问题的哪些操作,
注:仅供参考,有疑问或没疑问都可私信博主哦,共同学习,一起进步,奥利给!!!