首页 > 其他分享 >uvicorn自定义日志

uvicorn自定义日志

时间:2023-07-07 16:24:20浏览次数:39  
标签:INFO logging 自定义 app uvicorn access import 日志

BOSS问为什么对FastAPI的请求会有非200,一直抛异常,定位问题ing。

  1. 在对请求的处理日志中没有找到对应记录,请求没有过来。
  2. 观察uvicorn的日志,默认没有请求时间,无法比对。

INFO: 127.0.0.1:7225 - "POST /app HTTP/1.1" 200 OK

现在给这个日志加时间:

import asyncio
import importlib.util
import logging
import uvicorn
from fastapi import FastAPI
from starlette.responses import JSONResponse
app = FastAPI()


@app.get("/")
async def root():
    return {"message": "Hello World"}


@app.post("/app")
async def check_ticket(data: dict):
    return JSONResponse(content={"code":0, "msg": data})

LOGGING_CONFIG = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'default': {
            '()': 'uvicorn.logging.DefaultFormatter',
            'fmt': '%(levelprefix)s %(message)s',
            'use_colors': None,
        },
        'access': {
            '()': 'uvicorn.logging.AccessFormatter',
            'fmt': '%(asctime)s - %(levelprefix)s %(client_addr)s - "%(request_line)s" %(status_code)s',
        },
    },
    'handlers': {
        'default': {
            'formatter': 'default',
            'class': 'logging.StreamHandler',
            'stream': 'ext://sys.stderr',
        },
        'access': {
            'formatter': 'access',
            'class': 'logging.StreamHandler',
            'stream': 'ext://sys.stdout',
        },
    },
    'loggers': {
        'uvicorn': {
            'handlers': [
                'default',
            ],
            'level': 'INFO',
        },
        'uvicorn.error': {
            'level': 'INFO',
        },
        'uvicorn.access': {
            'handlers': [
                'access',
            ],
            'level': 'INFO',
            'propagate': False,
        },
    },
}

if __name__ == "__main__":
    logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
    uvicorn.run(app, host="127.0.0.1", port=8888,log_config=LOGGING_CONFIG)

image

遂断定与FastAPI返回无关,网络层问题。

标签:INFO,logging,自定义,app,uvicorn,access,import,日志
From: https://www.cnblogs.com/thx2199/p/17535285.html

相关文章

  • 自定义事件内容分发
    这个听的云里雾里,下面是一个示例demo<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Title</title></head><body><divid="app"><todo>&l......
  • C#自定义checkBox开关按钮控件,设计漂亮美观的UI按钮
    第一步:先准备开关按钮要使用到的背景图片,一张是开启的,一张是关闭的,如下图: 一共有6种款式,大家也可以全部加进去    然后将这些图片作为资源文件添加到项目中,如下图: 第二步、新建用户控件,命名为:ButtonCheck.cs ButtonCheck.cs代码如下:///<su......
  • vue 自定义指令实现overflow-tooltip
    利用elementui el-tooltip组件实现1.创建overflow-tooltip指令importVuefrom'vue'/*eslint-disable*/functiongetStyle(obj,attr){if(obj.currentStyle){returnobj.currentStyle[attr];}else{returngetComputedStyle(obj)[attr];......
  • 手把手教你自定义自己SpringBoot Starter组件源码剖析
    我们知道SpringBootStarter也就是启动器。是SpringBoot组件化的一大优点。基于这个思想,基于这个思想SpringBoot才变得非常强大,官方给我们提供很多开箱即用的启动器。SpringBootStarter是SpringBoot的一个重要特性,它有以下优点:依赖管理:Starter自动处理项目的依赖关系,......
  • 前端Vue自定义精美底部操作栏导航栏工具栏 可用于电商购物车底部导航
    随着技术的发展,开发的复杂度也越来越高,传统开发方式将一个系统做成了整块应用,经常出现的情况就是一个小小的改动或者一个小功能的增加可能会引起整体逻辑的修改,造成牵一发而动全身。通过组件化开发,可以有效实现单独开发,单独维护,而且他们之间可以随意的进行组合。大大提升开发效率......
  • 启动tomcat时idea控制台日志乱码的问题
    们知道乱码的产生是由于编码和解码的编码表不一致引起的。如果你在使用idea启动tomcat时控制台乱码了可以通过下面的方式排查第二种在tomcat修改配置文件找到tomcat安装位置,以我的演示E:\Environment\apache-tomcat-9.0.65\conf1.进入打开下面文件 2.进入配置文件修改编码方......
  • uniapp实现这该死的自定义弹窗
    最近自己学习和写这个uniapp,刚开始规划的时候就觉得自己到时候会需要一个这个弹框,弹框里面药房input这样的东西什么的,然后就在想uniapp里面会不会没有这个modal呢?转念一想应该是会有的吧,毕竟是一个框架嘛.然后我就找找找,找了好久都没找到合适的.可能是人家有我没找到吧,最......
  • 搭建hwi和告警和日志信息监控
    搭建hwi1.通过网址https://archive.apache.org/dist/hive/hive-2.0.0/安装hive/hive-2.0.0包[hadoop@master~]$wgethttps://archive.apache.org/dist/hive/hive-2.0.0/apache-hive-2.0.0-src.tar.gz[hadoop@masteropt]$lsapache-hive-2.0.0-src.tar.gzhadoop-2.7.1.tar......
  • nginx日志grafana展示
    背景:nginx日志没有使用json格式,直接通过flume输入到kafka,使用logstash读取kafka,将日志转换成json格式输入到es中。再从es中到prometheus。主要记录logstash实现转换过程记录。input{#输入组件kafka{......
  • Django restframwork中使用分页及实现自定义分页
    关于为何要分页以及如何在Django+Template架构中如何使用分页,可以参考之前的文章django自定义分页类和使用总结[1]DjangoRestFramework中分页限制今天开篇我们先不讲如何使用,我们先说Django+restframework实现前后端分离项目开发时,分页功能使用的限制?缘由是之前在开发运维......