首页 > 其他分享 >FastAPI学习-30 项目代码中添加自己的日志内容

FastAPI学习-30 项目代码中添加自己的日志内容

时间:2024-01-22 10:06:14浏览次数:23  
标签:FastAPI 30 uvicorn fastapi 日志 --------- logger

前言

前面一篇【FastAPI学习-29 uvicorn 使用 log_config 参数设置 logger 日志格式 】已经学会了配置uvicorn 的日志。
如何在fastapi 项目代码中添加自己的日志呢?

添加日志

创建一个logger实例,名称为"fast"

from fastapi import FastAPI
import logging

logger = logging.getLogger("fast")

app = FastAPI()


@app.get("/demo/")
async def create_item():
    logger.debug("info---------")
    logger.info("info---------")
    logger.warning("warning---------")
    logger.error("error---------")
    return {"demo": "hello world"}

启动项目访问/demo/地址,会看到warning 和 error的内容,默认情况下输出warning 以上级别的日志。

FastAPI学习-30 项目代码中添加自己的日志内容_参数设置

但是没有添加日志的格式。

配置logger

参考上一篇篇【FastAPI学习-29 uvicorn 使用 log_config 参数设置 logger 日志格式 】,默认loggers配置了3个:uvicorn、uvicorn.error、uvicorn.access

"loggers": {
    "fast": {
      "handlers": [
        "default"
      ],
      "level": "INFO"
    },
    "uvicorn": {
      "handlers": [
        "default"
      ],
      "level": "INFO"
    },
    "uvicorn.error": {
      "level": "INFO"
    },
    "uvicorn.access": {
      "handlers": [
        "access"
      ],
      "level": "INFO",
      "propagate": false
    }
  }

在里面添加一个自己定义的"fast" 即可, handlers 处理器用uvicorn 默认的格式,日志级别设置INFO。

重新访问就可以看到输出的日志格式与默认格式一样的了。

FastAPI学习-30 项目代码中添加自己的日志内容_FastAPI_02

其它方法

还有个更简便的方法,直接从 uvicorn 导入 logger 实例, 这样就不用配置日志了。

from fastapi import FastAPI
from uvicorn.server import logger


app = FastAPI()


@app.get("/demo/")
async def create_item():
    logger.debug("info---------")
    logger.info("info---------")
    logger.warning("warning---------")
    logger.error("error---------")
    return {"demo": "hello world"}

fastapi 里面也有个 logger 实例

from fastapi import logger

对应的源码

import logging

logger = logging.getLogger("fastapi")

logger 的名称是"fastapi",参考前面自定义的logger,需要在 log_config 参数里面配置,才有日志格式。



标签:FastAPI,30,uvicorn,fastapi,日志,---------,logger
From: https://blog.51cto.com/u_15249893/9360698

相关文章

  • FastAPI学习-28 alembic数据迁移报错:Target database is not up to date 报错解决办法
    前言当表结构有变更,数据迁移时,出现报错:Targetdatabaseisnotuptodate遇到的问题执行迁移命令alembicrevision--autogenerate-m"testv4"出现如下报错>alembicrevision--autogenerate-m"testv4"INFO[alembic.runtime.migration]ContextimplMySQLImpl.INFO[alem......
  • 最强AI手机选天玑!联发科天玑9300拿下终端、芯片双AI榜一
    1月18日消息,AIBenchmark发布了终端AI性能排行榜和芯片AI性能排行榜。其中联发科天玑9300拿下终端、芯片双榜一,堪称最强AI手机芯片。根据榜单,前三名OPPOFindX7、vivoX100Pro、vivoX100都是天玑9300终端。与此同时,天玑9300本身也获得芯片榜TOP1,领先竞品,证明天玑9300强悍AI性能......
  • 集中日志管理
    1.syslog日志输出接口#输出级别level,用于控制输出哪些级别的日志0emerg:Emergency(紧急)1alert:Alerts(报警)2crit:Critical(关键)3err:Errors(错误)4warn:Warnings(警告)5notice:Notification(通知)6info:Information(消息)7debug:Debugging(调试)#设备层级f......
  • MySQL - 日志
    1.回滚日志(undolog)作用:保存了事务发生之前的数据的一个版本,可以用于回滚,同时可以提供多版本并发控制下的读(MVCC),也即非锁定读内容:逻辑格式的日志(当delete一条记录是,记录一条对应的insert记录,反之亦然),在执行undo的时候,仅仅是将数据从逻辑上恢复至事务之前的状态释放:当事务提交......
  • Go语言核心36讲 30 | 原子操作(下)
    你好,我是郝林,今天我们继续分享原子操作的内容。我们接着上一篇文章的内容继续聊,上一篇我们提到了,sync/atomic包中的函数可以做的原子操作有:加法(add)、比较并交换(compareandswap,简称CAS)、加载(load)、存储(store)和交换(swap)。并且以此衍生出了两个问题。今天我们继续来看第三个衍......
  • G2303、G2318期末复习习题册第五章解答(1)
    ......
  • HDP 相关日志位置
      1.HIVESERVER2的日志:/var/log/hive-rwxrwxrwx1hivehadoop4791月1418:20hive.err-rwxrwxrwx1hivehadoop24381月1320:27hivemetastore-gc-2024-01-13_20-27-25.log.0.current-rwxrwxrwx1hivehadoop1032641月1321:47hivemetastor......
  • 20230120
    A.真实排名分类当前选手是否被操作,组合#include<bits/stdc++.h>usingnamespacestd;#defineintlonglong#defineullunsignedlonglong#defineALL(a)(a).begin(),(a).end()#definepbpush_back#definemkmake_pair#definepiipair<int,int>#definepisp......
  • 蓝桥杯准备---练习日志
    2024-01-17利用Cubemx配置usart中Asyn...和Syn....的意思是什么? 使用串口时报错如下------解决办法:添加st官方提供的串口驱动文件 修改底层printf内部的fputs代码---实现printf函数通过串口输出,需要利用LIB什么的......我猜测这个函数是向某个文件流中写......
  • 在 SpringBoot 项目中使用 MDC 实现日志 traceId 的统一
    前言在项目中,对于每一次请求,我们都需要一个traceId将整个请求链路串联起来,这样就会很方便我们根据日志排查问题。但是如果每次打印日志都需要手动传递traceId参数,也会很麻烦,MDC就是为了解决这个场景而使用的。注:这里我们使用slf4j+logbacklogback配置logback.xml......