zoukankan      html  css  js  c++  java
  • FastAPI logger日志记录方案 loguru模块

    实现方式:

    采用 loguru 模块、跟flask直接挂载到app上有区别,当然也可以尝试去这样做、

    但是 好像没有这个必要、要的就是个快速、整那些子虚乌有的东西完全木有意义。

    1、首先是去项目git溜达一圈:https://github.com/Delgan/loguru

       发现是英文。。。 木得感情、

      然后百度百度吧,还好python大神们都挺友好。

      百度一下 :python loguru 。。问题解决

      https://www.cnblogs.com/g2thend/p/12539923.html

      https://www.cnblogs.com/ice-coder/p/12821326.html

    2、首先肯定是模块安装了

    pip install loguru

    3、结合到FastAPI 项目、其实老简单了。

      1)搞个单独的日志管理模块 

      2)日志内容配置

      3)项目模块引用、完活 !!!

    1)日志配置模块: 创建extensionslogger.py,什么位置/名称的无所谓、只要能够被引用就行

     2)配置日志内容 : 应该都能看懂、看不懂自己百度去吧。

    import os
    import time
    from loguru import logger
    
    basedir = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
    
    print(f"log basedir{basedir}")  # /xxx/python_code/FastAdmin/backend/app
    # 定位到log日志文件
    log_path = os.path.join(basedir, 'logs')
    
    if not os.path.exists(log_path):
        os.mkdir(log_path)
    if not os.path.exists(log_path):
        os.mkdir(log_path)
    
    log_path_all = os.path.join(log_path, f'{time.strftime("%Y-%m-%d")}_log.log')
    log_path_error = os.path.join(log_path, f'{time.strftime("%Y-%m-%d")}_error.log')
    
    # 日志简单配置
    # 具体其他配置 可自行参考 https://github.com/Delgan/loguru
    logger.add(log_path_all, rotation="12:00", retention="5 days", enqueue=True)
    logger.add(log_path_error, rotation="12:00", retention="5 days", enqueue=True,level='ERROR') # 日志等级分割
    # format 参数: {time} {level} {message}、  {time:YYYY-MM-DD at HH:mm:ss} | {level} | {message} 记录参数
    # level 日志等级
    # rotation 参数:1 week 一周、00:00每天固定时间、 500 MB 固定文件大小
    # retention 参数: 10 days 日志最长保存时间
    # compression 参数: zip 日志文件压缩格式
    # enqueue 参数 True 日志文件异步写入
    # serialize 参数: True 序列化json
    # encoding 参数: utf-8 字符编码、部分情况会出现中文乱码问题
    # logger.info('If you are using Python {}, prefer {feature} of course!', 3.6, feature='f-strings') 格式化输入内容
    #  可通过等级不同对日志文件进行分割储存 

     3)项目模块引用:

    from fastapi import FastAPI,Form,Query,UploadFile,File,Request
    from pydantic import BaseModel,Field
    from typing import Optional,List
    import os,sys,time
    from extensions.logger import logger
    
    
    
    '''
    虚拟环境切换: conda activate FastAPI
    FastAPI 程序启动 :uvicorn manger:app --port 7777 --reload
    '''
    
    app = FastAPI()
    
    @logger.catch # 异常记录装饰器、放到下面好像不行、应该是异步的关系。
    def my_function(x, y, z):
        return [x,y,z]
    
    
    @app.post('/')
    async def root(data:dict):
        # get 请求
        logger.debug(f"这是日志!")
        logger.info('这是user接口:username={},当前时间戳为:{tiems}',data["username"], tiems=time.time())
        my_function(0,0)
        return {'message':'Hello World!'}

          完活!!!!

    太特么简单了,有木有、

  • 相关阅读:
    具有快表的地址变换机构
    npm更换淘宝镜像
    内存扩充技术
    内存管理的概念
    内存的基础知识
    102. 二叉树的层序遍历
    104. 二叉树的最大深度
    206. 反转链表
    mysql 多字段查询,全局搜素
    java 处理html转义字符
  • 原文地址:https://www.cnblogs.com/yc-c/p/14519142.html
Copyright © 2011-2022 走看看