Merge remote-tracking branch 'origin/master'

This commit is contained in:
2026-09-19 14:56:54 +08:00
4 changed files with 139 additions and 0 deletions
+65
View File
@@ -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 )
+26
View File
@@ -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
+24
View File
@@ -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信息'
+24
View File
@@ -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信息'