json_path 就是用来取层级比较多比较复杂的方式,只要一行代码就可以取到啦
s={"errno":0,"data":12}
print(jsonpath.jsonpath(s,'$.max_count'))#$代表最原始的字典
print(jsonpath.jsonpath(s,'$.mems[0].nick'))#获取第0个元素返回一个list
print(jsonpath.jsonpath(s,'$..level')) #模糊查询
写日志是为了方便查看错误
用到的python模块就是loguru模块
from loguru import logger
#debug调试信息=这是日志最低的级别
#info 正常的提示信息
#error就是出错的日志
#exception #执行出错了 sql执行出错了
#waring 警告的信息
如果只想做一个调试信息
一共就四种级别, 显示时间,级别,python文件名字,module那个方法里面,现在没有方法 加个结尾fd()就有方法了 这种只是输出
日志级别 设置级别方法
logger.add('wxl.log',level='WARNING',encoding='utf-8')#写进日志里,在服务器里 add写日志级别意思
如果在本地使用这个方法
logger.remove()#清除默认的配置debug配置否则输出会带debug,我们想改配置就要带这一行
#debug生产环境不会写
logger.add(sys.stdout,level='WARNING')#设置日志级别一般都是info,stdout
#逻辑都是往stdout写数据在输出到操作系统,不加这句屏幕就没有
fmt = '[{time}][{level}][{file.path}:line:{line}:function_name:{function}] ||msg={message}' 调整显示的格式内容操作,显示时间日志级别,当前路径和名字
Log日志级别从高到低排序 ERROR、WARNing、INFO、DEBUG 打印的都是比他高的 比如你要打印WARING日志那没,输出只会打印waring和error
#debug调试信息=这是日志最低的级别
#info 正常的提示信息
#error就是出错的日志
#exception #执行出错了 sql执行出错了
#waring 警告的信息
#高并发怎么写 cpu 火箭 内存高铁 磁盘最慢 交互磁盘很不好,同步写不太好
#所以需要异步写,不会先放到磁盘,先放到消息队列里,去排队处理,他自己在起一个线程然后去写
这样就减少了程序在磁盘交互,提高性能enqueue=True, rotation='1 day') # 写在日志文件里面
rotation 是删除日志的操作
rotation='1 day' 每天生成一次
rotation='1 day'如果写1kb就会产生一个文件也可以不设置
rotation='2kb,0:00,7 days' 七天零点清除日志
# rotation可以设置大小,超过多大就产生一个新文件 1 kb ,500 m ,1 g
# rotation可以多长时间,1 day 1 hour
# rotation几点创建新文件,00:00 1:00
# rotation几点创建新文件,10 second 十分钟清除之前的日志
# retention = 7 days #多长时间后会删除以前产生的日志,当前的日志不会受影响
#enqueue=True,异步写日志 #同步
#队列
#消息队列
标准写法
import time
import sys
def fd():
logger.remove()#清除它的默认设置设置
fmt = '[{time}][{level}][{file.path}:line:{line}:function_name:{function}] ||msg={message}'
logger.add('wxl.log',level='DEBUG',format=fmt,encoding='utf-8',enqueue=True,rotation='1s',retention='10 second')#写在日志文件里面
#retention 删除日志定时删除之前的 rotation设置日志生成的条件
for i in range(20):#执行异步加函数
time.sleep(1)
logger.debug('程序开始运行了')
logger.debug('开始连接mysql')
logger.info('mysql配置xxxx')
logger.warning('警告,磁盘空间即将不足')
logger.error('程序出错了')
fd()