持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第2天,点击查看活动详情
大家好~我是小方,欢迎大家关注笋货测试笔记体完记得俾个like呀
接上篇
上篇我们讲了后端项目的初始化,没有看的小伙伴可以回头复习一下哈~今天我们来给后端服务添加日志
日志模块选用
- logging
- 这个模块是我写接口自动化经常用到的,里面api挺齐全,挺强大的
- logbook
- 这个模块我一开始也不知道,直到我看到无敌哥的pity,里面用的是logbook,api调用挺简洁的
果断抄过来了
- 这个模块我一开始也不知道,直到我看到无敌哥的pity,里面用的是logbook,api调用挺简洁的
编写日志工具类
日志属于工具类,理所当然的就在app/utils目录下
import logbook
from logbook.more import ColorizedStderrHandler
from config import FilePath
class Log(object):
def __init__(self, name='FunDataFactory', filename=FilePath.LOG_NAME):
"""
:param name: 模块名
:param filename: 文件名称
"""
self.logger = logbook.Logger(name)
self.logger.handlers = []
# 日志打印到文件
log_file = logbook.FileHandler(filename, encoding='utf-8')
# 日志打印到控制台
log_std = ColorizedStderrHandler(bubble=True)
logbook.set_datetime_format("local")
self.logger.handlers.append(log_std)
self.logger.handlers.append(log_file)
def info(self, *args, **kwargs):
return self.logger.info(*args, **kwargs)
def error(self, *args, **kwargs):
return self.logger.error(*args, **kwargs)
def warning(self, *args, **kwargs):
return self.logger.warning(*args, **kwargs)
def debug(self, *args, **kwargs):
return self.logger.debug(*args, **kwargs)
我们先初始化日志类,name为模块名,filename为文件名,目前logbook中处理方式(handlers)有两种,输出到文件中和控制台中,接着将常用的方法简单套一下娃,有条件的同学,可以自行改一下输出格式~
本地测试一下
if __name__ == '__main__':
test_log = Log('这是测试模块')
test_log.info('pity牛逼~')
小技巧
还记得我们编写config.py的时候,存放日志的目录加了一段特殊的代码?
# 不存在logs目录时,自动创建目录
if not os.path.isdir(LOG_FILE_PATH): os.mkdir(LOG_FILE_PATH)
解释一下因为我们在上传代码的时候,.gitignore默认过滤不上传*.log的文件,相当于logs目录下不会存在文件,git push时,会过滤空目录~所以你们clone的项目,都不会存在logs目录,因此这段代码必不可少~~~应该不会翻车~~
引入日志
现在我们给之前的路由函数添加log吧~
这里修改的是main.py文件哦~
from app import fun
from app.utils.logger import Log
@fun.get("/")
async def root():
logger = Log('测试模块')
logger.info('欢迎来到方总的数据工厂~')
return {"message": "Hello World"}
浏览器访问http://127.0.0.1:8080/日志功能搞定done~
总结
今天内容不算多,主要是日志功能的添加,项目地址:github.com/JokerChat/F… 今天的代码也提交了哦,记得敲一下,下期就要开始写接口了哦~