学习python自动化——log日志
一、log日志
1.1、从代码里收集过来,用来还原用户行为
1.2、python自带的库
import logging
1.3、日志打印原则:只打印关键信息(能够还原用户行为的关键信息)
1.4、自动化测试关键信息
1)请求地址
2)请求方式
3)请求时间
4)请求参数
5)断言
6)日志级别
7)响应结果
1.5、日志级别
debug < info < warning < error < critical
debug级别是最高,最优先输出的,但严重程度是最低的
当日志级别是debug时,优先输出debug程度,但也包括了info、warning、error、critical严重程度的日志
当日志级别是warning时,优先输出warning 程度,但也包括了error、critical严重程度的日志
1.6、日志级别选择
一般程序正常运行产生的日志:info
调试、打断点的日志:debug
1.7、日志设置级别:logging.basicConfig(level=logging.日志级别)
logging.basicConfig(level=logging.DEBUG) #设置debug级别,日志级别需要大写
1.8、日志信息:logging.日志级别(输出的日志信息)
logging.info('python') #输出python的日志信息
二、日志收集器步骤
import logging
from logging import handlers
#创建日志收集器
py_39=logging.getLogger(name='py39')
#创建日志收集渠道
pycham=logging.StreamHandler() #控制台渠道
file=handlers.TimedRotatingFileHandler(filename='python1.log',when='D',interval=1,backupCount=5,encoding='utf-8') #按时间收集
#日志格式
fmt='%(asctime)s-%(name)s-%(levelname)s-%(filename)s-%(funcName)s-[line:%(lineno)d]:%(message)s'
log_fmt=logging.Formatter(fmt=fmt)
#日志级别:收集器、渠道,可以不同的渠道输出日志级别不一样
py_39.setLevel(logging.DEBUG)
#给渠道添加日志格式
pycham.setFormatter(fmt=log_fmt)
file.setFormatter(fmt=log_fmt)
#渠道与收集器绑定
py_39.addHandler(pycham)
py_39.addHandler(file)
py_39.info('test')
2.1、创建日志收集器:日志收集器=logging.getLogger(name=日志收集器名字)
py_39=logging.getLogger(name='py39') #name:日志收集器名字
2.2、创建日志收集渠道
2.2.1、文件渠道
1)收集所有日志
file=logging.FileHandler(filename='python1.log',encoding='utf-8') #一个日志文件收集所有的日志,无法按日期生成
2)按文件大小收集日志
from logging import handlers
#maxBytes:保留文件大小,backupCount:保留历史记录数,默认0时表示不保留,直接覆盖掉
file=handlers.RotatingFileHandler(filename='python1.log',maxBytes=1,backupCount=5,encoding='utf-8')
3)按时间收集日志
from logging import handlers
#when取值:
# S - Seconds:秒
# M - Minutes:分
# H - Hours:小时
# D - Days:天(常用)
# midnight - roll over at midnight:午夜,23点59分59秒
# W{0-6} - roll over on a certain day; 0 - Monday:星期日到星期六
#interval:拆分次数,如when=D,interval=1表示按1天切换一次日志
file=handlers.TimedRotatingFileHandler(filename='python1.log',when='S',interval=1,backupCount=5,encoding='utf-8')
2.2.2、控制台渠道:渠道=logging.StreamHandler()
pycham=logging.StreamHandler() #创建日志收集渠道,将日志输出到控制台
2.2.3、收集器与渠道的关系
1)收集器只负责收集日志信息
2)渠道负责输出日志信息
2.2.4、日志格式与渠道的关系
1)日志格式相当于渠道的一个属性
2.3、创建日志格式:日志格式=logging.Formatter(fmt=格式)
- %(name)s :logger的名字
- %(levelno)s :数字形式的日志级别
- %(levelname)s :文本形式的日志级别
- %(pathname)s : 调用日志输出函数的模块的完整路径名
- %(filename)s : 调用日志输出函数的模块的文件名
- %(module)s :调用日志输出函数的模块名
- %(lineno)d :调用日志输出函数的语句所在代码行
- %(funcName)s :调用日志输出函数的函数名
- %(created)f :当前时间
- %(asctime)s :字符串形式的当前时间
- %(msecs)d :毫秒
- %(relativeCreated)d : 输出日志信息时,自logger创建以来的毫秒数
- %(thread)d :线程ID
- %(threadName)s :线程名
- %(process)d : 进程ID
- %(message)s :用户输出的消息
fmt='%(asctime)s-%(name)s-%(levelname)s-%(filename)s-%(funcName)s-[line:%(lineno)d]:%(message)s' #日志格式
log_fmt=logging.Formatter(fmt=fmt)
2.4、设置日志级别:收集器/渠道.setLevel(logging.日志级别)
1)收集器设置日志级别
#日志级别:收集器、渠道,可以不同的渠道输出日志级别不一样
py_39.setLevel(logging.DEBUG) #收集器设置日志级别
2)渠道设置日志级别
pycham.setLevel(logging.INFO) #控制台渠道设置日志级别
2.5、给渠道添加日志格式:渠道.setFormatter(fmt=日志格式)
1)控制台渠道添加日志格式
#给控制台渠道添加日志格式
pycham.setFormatter(fmt=log_fmt)
2)文件渠道添加日志格式
file.setFormatter(fmt=log_fmt)
2.6、收集器与渠道绑定:日志收集器.addHandler(渠道)
1)与控制台渠道绑定
py_39.addHandler(pycham)
2)与文件渠道绑定
py_39.addHandler(file)
三、log封装
import logging
from logging import handlers
def handle_log():
#创建日志收集器
py_39=logging.getLogger(name='py39')
#创建日志收集渠道
pycham=logging.StreamHandler()
file=handlers.TimedRotatingFileHandler(filename='python1.log',when='D',interval=1,backupCount=5,encoding='utf-8') #按天收集
#日志格式
fmt='%(asctime)s-%(name)s-%(levelname)s-%(filename)s-%(funcName)s-[line:%(lineno)d]:%(message)s'
log_fmt=logging.Formatter(fmt=fmt)
#日志级别:收集器、渠道,可以不同的渠道输出日志级别不一样
py_39.setLevel(logging.DEBUG)
#给渠道添加日志格式
pycham.setFormatter(fmt=log_fmt)
file.setFormatter(fmt=log_fmt)
#渠道
py_39.addHandler(pycham)
py_39.addHandler(file)
return py_39
my_logger=handle_log() #在封装里直接实例化,后续使用时在导入模块里直接导入my_logger,如果后续使用时导入handle_log,再实例化,会重复输出日志
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!