Logs模块
logger.py文件(生成日志的代码)
import logging
import os.path
import time
class Logger(object):
def __init__(self, logger):
# 创建一个logger
self.logger = logging.getLogger(logger)
self.logger.setLevel(logging.DEBUG) # 定义日志的级别
# 创建一个handler,用于写入日志文件
rq = time.strftime('%Y%m%d%H%M', time.localtime(time.time()))
# log_path = os.path.dirname(os.getcwd()) + '/Logs/' # 项目根目录下/Logs 保存日志
log_path = os.path.dirname(os.path.abspath('.')) + '/Logs/' # 日志存放地址
# 如果case组织结构式 /testsuit/featuremodel/xxx.py , 那么得到的相对路径的父路径就是项目根目录
log_name = log_path + rq + '.log'
fh = logging.FileHandler(log_name)
fh.setLevel(logging.INFO)
# 再创建一个handler,用于输出到控制台
# ch = logging.StreamHandler()
# ch.setLevel(logging.INFO)
# 定义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):
return self.logger
1.如何在代码中调用日志
from config.logger import Logger # 导入日志模块
logger = Logger(logger="login").get_log() # 定义日志名字为login并调用get_log获取返回的日志,此代码放于测试用例类之前
logger.info("test_01:Get url and visit") # 此代码放于测试用例中,需要打印日志的地方则调用logger.info
2.生成的日志
3.log的基本使用
参数名称 | 参数描述 |
---|---|
filename | 日志输出到文件的文件名 |
filemode | 文件模式,r[+]、w[+]、a[+] |
format | 日志输出的格式 |
datefat | 日志附带日期时间的格式 |
style | 格式占位符,默认为 “%” 和 “{}” |
level | 设置日志输出级别 |
stream | 定义输出流,用来初始化 StreamHandler 对象,不能 filename 参数一起使用,否则会ValueError 异常 |
handles | 定义处理器,用来创建 Handler 对象,不能和 filename 、stream 参数一起使用,否则也会抛出 ValueError 异常 |
4.日志级别
一般用info级别就够了,如出现级别高的,则低级别的日志不会被输出
每个debug级别的日志调用前需加上if判断,一般这个级别的日志不输出
级别 | 描述 |
---|---|
OFF | 最高级别,用于关闭日志记录。 |
FATAL | 导致应用程序提前终止的严重错误。 |
ERROR | 其他运行时错误或意外情况。 |
WARN | 使用已过时的API,API的滥用,潜在错误,其他不良的或意外的运行时的状况(但不一定是错误的)。 |
INFO | 重要,输出信息:用来反馈系统的当前状态给最终用户的。 |
DEBUG | 级别最低,可以使用于任何觉得有利于调试时更详细的了解系统运行状态的东东。 |
TRACE | 最详细的信息。一般这些信息只记录到日志文件中。 |
=======================================================================