Merge remote-tracking branch 'origin/master'
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
import logging
|
||||
'''
|
||||
使用日志的六个步骤:
|
||||
①定义lgger日志器(谁来产生日志,默认是root): lg = logging.getLogger( 'abc' )
|
||||
②设置日志等级: lg.setLevel( logging.INFO )
|
||||
③定义handlers(产生的日志输出到哪里,到控制台还是文件): con_hand = logging.StreamHandler()
|
||||
④定义formatter日志打印格式,并绑定handlers
|
||||
con_hand = logging.StreamHandler() # ③定义handlers(产生的日志输出到哪里,到控制台还是文件)
|
||||
formatter = logging.Formatter( '%(asctime)s - %(name)s - %(levelname)s - %(message)s'
|
||||
,datefmt='%Y-%m-%d %H:%M:%S' # 定义时间的格式
|
||||
) # ④定义formatter日志打印格式,并绑定handlers
|
||||
con_hand.setFormatter( formatter ) # 并绑定handlers
|
||||
⑤将handlers的处理添加到日志器进行记录
|
||||
lg.addHandler( con_hand )
|
||||
⑥打印日志测试
|
||||
lg.info('xxxx')
|
||||
lg.debug('xxx')
|
||||
'''
|
||||
class Log:
|
||||
def __init__(self,name,lv):
|
||||
self.logName = logging.getLogger( name ) # ①定义lgger日志器
|
||||
self.logName.setLevel( eval( f'logging.{lv.upper()}' ) ) # ②设置日志等级
|
||||
self.formatter = logging.Formatter( '%(asctime)s - %(name)s - %(levelname)s - %(message)s'
|
||||
,datefmt='%Y-%m-%d %H:%M:%S' # 定义时间的格式
|
||||
) # ④定义formatter日志打印格式,并绑定handlers
|
||||
self.handlers = self.logName.handlers # 定义属性来接收 handlers,方便外部查看有没有添加handlers
|
||||
def logConsol(self):
|
||||
con_hand = logging.StreamHandler() # ③定义handlers(产生的日志输出到哪里,到控制台还是文件)
|
||||
con_hand.setFormatter( self.formatter ) # 并绑定handlers
|
||||
if 'StreamHandler' not in str(self.handlers): # 如果绑定输出到控制台已经绑定好了,就不会重复绑定了
|
||||
self.logName.addHandler( con_hand ) # ⑤将handlers的处理添加到日志器进行记录
|
||||
def logFile(self,fileName):
|
||||
file_hand = logging.FileHandler( fileName,encoding='utf-8' ) # ③定义handlers
|
||||
file_hand.setFormatter( self.formatter )
|
||||
if 'FileHandler' not in str(self.handlers):
|
||||
self.logName.addHandler(file_hand) # ⑤将handlers的处理添加到日志器
|
||||
def message(self,lv,mes):
|
||||
lv = lv.lower() # 把日志等级处理成小写
|
||||
if lv == 'debug':
|
||||
self.logName.debug( mes )
|
||||
elif lv == 'info':
|
||||
self.logName.info(mes)
|
||||
elif lv == 'warning':
|
||||
self.logName.warning(mes)
|
||||
elif lv == 'error':
|
||||
self.logName.error(mes)
|
||||
elif lv == 'critical':
|
||||
self.logName.critical(mes)
|
||||
else:
|
||||
print('请输入正确的日志级别!')
|
||||
|
||||
if __name__ == '__main__':
|
||||
lg1 = Log('ai0824','InFo')
|
||||
lg1.logConsol()
|
||||
lg1.message( 'info','这是info日志...' )
|
||||
lg1.message('warning', '这是warning日志...')
|
||||
|
||||
lg1.logFile('ai0824.log')
|
||||
lg1.message( 'error','这是error级别的日志...' )
|
||||
|
||||
lg1.logConsol()
|
||||
lg1.message('info', '这是info日志...')
|
||||
|
||||
|
||||
print( lg1.handlers )
|
||||
@@ -0,0 +1,26 @@
|
||||
# ④ 编写一个中间文件midlleware.py文件,写两个中间件,一个中间件函数是用来拦截ip黑名单的,黑名单自定义,
|
||||
# 另一个中间件是用来记录每个访问接口的执行时间的,在main.py文件里调用中间件
|
||||
from fastapi import Request,Response
|
||||
from datetime import datetime
|
||||
from time import time
|
||||
|
||||
async def m1(req:Request,next):
|
||||
if req.client.host not in ['192.168.5.20','192.168.5.17']:
|
||||
r1 = await next(req)
|
||||
return r1
|
||||
else:
|
||||
return Response(content='别上网了,去学习吧')
|
||||
|
||||
async def m2(req:Request,next):
|
||||
start = datetime.now()
|
||||
print(f'请求执行的时间:{start}')
|
||||
r2 = await next(req)
|
||||
end = datetime.now()
|
||||
print(f'请求执行的时间:{end}')
|
||||
return r2
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
from fastapi import APIRouter
|
||||
|
||||
# 订单一
|
||||
OrderRouter1 = APIRouter()
|
||||
|
||||
@OrderRouter1.get("/orders1",summary='查询订单1信息')
|
||||
def get_goods():
|
||||
return '查询订单1信息'
|
||||
|
||||
@OrderRouter1.post("/orders1",summary='新增订单1信息')
|
||||
def post_goods():
|
||||
return '新增订单1信息'
|
||||
|
||||
# 订单二
|
||||
|
||||
OrderRouter2 = APIRouter()
|
||||
|
||||
@OrderRouter2.get("/orders2",summary='查询订单2信息')
|
||||
def get_goods():
|
||||
return '查询订单2信息'
|
||||
|
||||
@OrderRouter2.post("/orders2",summary='新增商品2信息')
|
||||
def post_goods():
|
||||
return '新增商品2信息'
|
||||
@@ -0,0 +1,24 @@
|
||||
from fastapi import APIRouter
|
||||
|
||||
# 商品一
|
||||
GoodsRouter1 = APIRouter()
|
||||
|
||||
@GoodsRouter1.get("/goods1",summary='查询商品1信息')
|
||||
def get_goods():
|
||||
return '查询商品1信息'
|
||||
|
||||
@GoodsRouter1.post("/goods1",summary='新增商品1信息')
|
||||
def post_goods():
|
||||
return '新增商品1信息'
|
||||
|
||||
# 商品二
|
||||
|
||||
GoodsRouter2 = APIRouter()
|
||||
|
||||
@GoodsRouter2.get("/goods2",summary='查询商品2信息')
|
||||
def get_goods():
|
||||
return '查询商品2信息'
|
||||
|
||||
@GoodsRouter2.post("/goods2",summary='新增商品1信息')
|
||||
def post_goods():
|
||||
return '新增商品2信息'
|
||||
Reference in New Issue
Block a user