当前位置:   article > 正文

fastapi学习记录【十】_fastapi log

fastapi log

代码地址:GitHub - wendingming/fastapi-vue-postgresql: fastapi+vue+postgresql搭建项目

今天咱们来学一下,网上开源的这套代码

Vue3+FastAPI: Vue3+ElementPlus+FastAPI 实现学生选课系统

由网友zxiaosi开发完成,感谢

注意:需要python3.8以上版本。

首先进行项目部署:

一、需要先修改fastapi后台的:core/config文件的mysql账号密码,
二、本地mysql新建数据库:elective_system
三、运行fastapi后台的:initial_data的init_data.py文件,【pycharm->打开这个页面->右键->run】
四、VUE前端,修改vite.config.js的BASE_URL: http://127.0.0.1:9000/api/

五、启动fastapi:在terminal输入代码:uvicorn main:app --reload --port 9000,回车

六、VUE前端:在terminal输入代码:先执行:npm install,再执行:npm run dev

最后前端页面如下图:

 接下来我们来详细看代码,首先是main.py,代码如下:

  1. #!/usr/bin/env python3
  2. # _*_ coding: utf-8 _*_
  3. # @Time : 2021/9/19 22:04
  4. # @Author : zxiaosi
  5. # @desc : 主函数
  6. import uvicorn
  7. from fastapi import FastAPI
  8. from core import settings
  9. from db import init_db
  10. from initial_data import sqlalchemy_core_initial, sqlalchemy_orm_initial
  11. from register import register_app, register_cors, register_exception, register_router, register_redis
  12. from register.middleware import register_middleware
  13. from utils import logger
  14. # 接口文档配置
  15. app = FastAPI(description=settings.PROJECT_DESCRIPTION, version=settings.PROJECT_VERSION)
  16. # 挂载其他app
  17. register_app(app)
  18. # 注册路由
  19. register_router(app)
  20. # 注册跨域请求
  21. register_cors(app)
  22. # 注册Redis
  23. register_redis(app)
  24. # 注册请求响应拦截
  25. register_middleware(app)
  26. # 注册捕获全局异常
  27. register_exception(app)
  28. if __name__ == '__main__':
  29. logger.info("日志初始化成功!!!")
  30. # 创建所有表
  31. init_db()
  32. # 两种初始化表数据的方式 (只能插入一次)
  33. # sqlalchemy_orm_initial() # 速度略慢,性能正常
  34. sqlalchemy_core_initial() # 速度与性能并行
  35. # Docker启动方式
  36. # uvicorn.run(app='main:app', host="0.0.0.0", port=8000)
  37. uvicorn.run(app='main:app', host="127.0.0.1", port=9000)

其中第一步,是加载日志,加载日志是使用loguru库,

该库的文档说明可以查看:Overview — loguru documentation

备注:【英文】

中文的安装使用说明,可以参考:Python - loguru日志库,高效输出控制台日志和日志记录 - 小菠萝测试笔记 - 博客园

当前开源代码使用的loguru库代码如下:

  1. #!/usr/bin/env python3
  2. # _*_ coding: utf-8 _*_
  3. # @Time : 2021/11/8 10:44
  4. # @Author : zxiaosi
  5. # @desc : 日志文件夹
  6. import os
  7. from loguru import logger
  8. from core.config import settings
  9. # 获取当前文件夹
  10. current_path = os.path.dirname(__file__)
  11. # 获取当前文件夹的上一层文件
  12. base_path = os.path.abspath(os.path.join(current_path, ".."))
  13. # 拼接日志的路径
  14. log_path = base_path + os.sep + settings.LOGGER_FOLDER + os.sep
  15. # print(f'日志文件夹名: {log_path} \n')
  16. """如果文件夹不存在就创建"""
  17. os.makedirs(log_path, exist_ok=True)
  18. """ 保留日志文件夹下最大个数(自己调试用) """
  19. file_list = os.listdir(log_path)
  20. if len(file_list) > 4:
  21. os.remove(os.path.join(log_path, file_list[0]))
  22. # 日志输出路径
  23. log_path_name = os.path.join(log_path, settings.LOGGER_NAME)
  24. # 详见: https://loguru.readthedocs.io/en/stable/overview.html#features
  25. logger.add(log_path_name,
  26. encoding=settings.GLOBAL_ENCODING,
  27. level=settings.LOGGER_LEVEL,
  28. rotation=settings.LOGGER_ROTATION,
  29. retention=settings.LOGGER_RETENTION,
  30. enqueue=True)
  31. # 导出变量名
  32. __all__ = ["logger"]

使用后的效果如下:

 嗯,赞一个,简单实用,比java的日志简单容易不知道多少倍,python库,永远的神。

PS:我始终认为,JAVA反人类,要记得东西太多了,而且不直观,只不过学JAVA的人多,库多,啥玩意都有,人多势众说的就是JAVA,只不过学习起来,容易让人头秃,尼玛的一个简单的功能,绕来绕去,还要看JDK版本,第三方库版本,还要配置POM,引用后,还要生成对象,使用对象的各种属性方法,写个接口还要分impl,intf,控制器,安卓用个第三方库,还要把库下载,把各种操作方法,属性,写一套操作代码,然后再把它引用的项目里add library,然后项目里还要调用这些方法,属性,尼玛的,烦不烦啊,太复杂了。

python很简洁,优雅,

我觉得java和python对比,就好像马云对比马斯克,马云vs马化腾,都是姓马【都是编程语言】,都是有钱,都是有本事,区别就是:马云太丑了,java就像他。

不扯淡了,薅头发去,明天再学习

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/344773
推荐阅读
相关标签
  

闽ICP备14008679号