fastapi_No.24_日志记录系统

news2024/11/25 6:54:00

文章目录

  • 第一步:创建日志记录器
  • 第二步:挂载日志记录器
  • 第三步:使用日志记录
  • 第四步:清除日志记录器
  • 完整代码

第一步:创建日志记录器

利用loguru包创建一个日志记录器。

from loguru import logger
from datetime import timedelta

# 第一步:创建一个日志记录器
# 清除默认日志记录器
logger.remove()
# 创建新的日志记录器
# 每天生成一个日志文件,文件名称时年-月-日的形式命名
# 日志文件保存7天
logger.add(
    sink="./No22_日志处理/logs/{time:YYYY-MM-DD}.log",
    format="{time:YYYY-MM-DD HH:mm:ss} | {level} | {message}",
    level="INFO",
    rotation="1 days",
    retention=timedelta(days=7)
    )

第二步:挂载日志记录器

利用FastAPI实例对象的state属性挂载日志记录器。

from fastapi import FastAPI
app = FastAPI()
@app.on_event("startup")
def startup_event():
    # 在系统启动时,挂载日志记录器
    # 第二步:为app注册一个公共的日志记录器
    app.state.logger = logger

第三步:使用日志记录

在使用日志记录信息时有两种方式:
1.利用logger的catch装饰器记录异常
2.利用logger的info,debug,error等方法记录响应的事件信息

# 第三步:在路径操作函数中试用日志记录器记录日志
@app.get("/")
# 利用logger.catch装饰器可以记录异常信息
@logger.catch
def getHome(req:Request):
    # 利用req的app属性可以访问到整个app
    req.app.state.logger.info("访问首页")
    return "/home"

第四步:清除日志记录器

当系统关闭时,需要清除日志记录器。

@app.on_event("shutdown")
def shutdown_event():
    # 第四步:清除日志记录器
    app.state.logger.remove()

完整代码

from fastapi import FastAPI,Request
from loguru import logger
from datetime import timedelta

# 第一步:创建一个日志记录器
# 清除默认日志记录器
logger.remove()
# 创建新的日志记录器
# 每天生成一个日志文件,文件名称时年-月-日的形式命名
# 日志文件保存7天
logger.add(
    sink="./No22_日志处理/logs/{time:YYYY-MM-DD}.log",
    format="{time:YYYY-MM-DD HH:mm:ss} | {level} | {message}",
    level="INFO",
    rotation="1 days",
    retention=timedelta(days=7)
    )

app = FastAPI()
@app.on_event("startup")
def startup_event():
    # 在系统启动时,挂载日志记录器
    # 第二步:为app注册一个公共的日志记录器
    app.state.logger = logger

@app.on_event("shutdown")
def shutdown_event():
    # 第四步:清除日志记录器
    app.state.logger.remove()

# 第三步:在路径操作函数中试用日志记录器记录日志
@app.get("/")
# 利用logger.catch装饰器可以记录异常信息
@logger.catch
def getHome(req:Request):
    # 利用req的app属性可以访问到整个app
    req.app.state.logger.info("访问首页")
    return "/home"

if __name__ =="__main__":
    import uvicorn
    uvicorn.run(app='main:app',host="127.0.0.1",port=8080,reload=True)

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/50764.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

快速提升中小企业销售效率的5个自动化小技巧

成长期的中小企业,如何提升销售/市场部效率就是CEO/COO/CMO/销售VP们非常关心的一个话题。销售效率的计算很简单,通常用销售团队的总收入除以销售团队的工资、福利、办公成本等。举例,如果一个30人的销售团队,一年的销售收入是500…

GD32串口空闲(IDLE)中断 + DMA机制接收数据

前言 串口功能在单片机开发中,是比较常用的外设,熟练使用串口功能也是驱动开发必备的技能之一。 DMA是一种CPU辅助手段,可以在CPU不参与的情况下,是做一些辅助CPU的事情,如通常的数据搬运。 在没有DMA之前,…

R语言分位数回归Quantile Regression分析租房价格

全文链接:http://tecdat.cn/?p18422本文想在R软件中更好地了解分位数回归优化。在查看分位数回归之前,让我们从样本中计算中位数或分位数(点击文末“阅读原文”获取完整代码数据)。相关视频中位数考虑一个样本 。要计算中位数&am…

1.聊聊Netty那些事儿之从内核角度看IO模型

从今天开始我们来聊聊Netty的那些事儿,我们都知道Netty是一个高性能异步事件驱动的网络框架。 它的设计异常优雅简洁,扩展性高,稳定性强。拥有非常详细完整的用户文档。 同时内置了很多非常有用的模块基本上做到了开箱即用,用户…

营销投入大没效果?痛点难点一站式解决!

市场经济在不断发展、走向成熟的过程中,也使得市场结构和要素变得愈发复杂。营销一直是企业的必需品,其理念和方法也在不断变化。 营销是一项有组织的活动,它包括创造“价值”,将“价值”通过沟通输送给顾客,以及维系…

【毕业设计】大数据心血管疾病数据分析(医学大数据分析)

文章目录0 前言1 课题背景2 数据处理3 数据可视化4 最后0 前言 🔥 Hi,大家好,这里是丹成学长的毕设系列文章! 🔥 对毕设有任何疑问都可以问学长哦! 这两年开始,各个学校对毕设的要求越来越高&#xff0c…

Flink系列之Flink流式计算引擎基础理论

声明: 文章中代码及相关语句为自己根据相应理解编写,文章中出现的相关图片为自己实践中的截图和相关技术对应的图片,若有相关异议,请联系删除。感谢。转载请注明出处,感谢。 By luoyepiaoxue2014 B站&#xff…

[附源码]计算机毕业设计JAVA线上图书销售管理系统

[附源码]计算机毕业设计JAVA线上图书销售管理系统 项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM my…

电脑卡怎么办?4招帮你解决电脑卡顿的烦恼!

你是不是也遇到过这样的情况:电脑突然卡顿,玩游戏也是卡的不行。首先我们先了解一下电脑卡顿的原理。造成这种现象的原因主要是由于 CPU、显卡等硬件性能老化或者损坏。电脑卡顿对我们来说真的非常痛苦,严重影响了工作和学习效率,…

【使用 BERT 的问答系统】第 3 章 :词嵌入介绍

🔎大家好,我是Sonhhxg_柒,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 📝个人主页-Sonhhxg_柒的博客_CSDN博客 📃 🎁欢迎各位→点赞…

计算机毕业设计-微信小程序文学小说阅读销售系统

项目介绍 制作小说阅读管理系统提供读者的交流平台,让作者可以通过这个方式让跟多的人看到自己的作品,能跟快的让读者看到自己的创作以及读者对自己的一些评论、意见,能够及时的明白读者的想法来调节自己创作思路。也能为读者节省很多买书的…

遗传算法(GA)优化的BP神经网络预测,GA-BP回归预测,多输入单输出模型。

clc; clear all; close all warning off tic %% 导入数据 % 训练集——190个样本 P_train xlsread(data,training set,B2:G191); T_train xlsread(data,training set,H2:H191); % 测试集——44个样本 P_testxlsread(data,test set,B2:G45); T_testxlsr…

[附源码]计算机毕业设计springboot美发店会员管理系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

SpringBoot日志文件

文章目录日志有什么作用?SpringBoot 的日志日志级别日志级别的分类自定义日志在程序中得到日志对象使用日志对象打印日志日志级别设置日志持久化更简单的日志输出—lombok日志有什么作用? 日志是程序的重要组成部分,想象⼀下,如果…

Android 导航之Navigation 组件的介绍与使用

1、介绍: 在以前的应用中,针对多导航模块的使用,常见的有tabhost或者FragmentTabHost,但是这些在使用的过程中,非常臃肿,包括加载和管理也不如人意。在AndroidX中,官方引入Navigation模块&#…

【信管2.4】项目运行环境与项目经理

项目运行环境与项目经理加餐加餐来了哦,今天的内容在 《信息系统项目管理师教程》 这本教材里是没有的,而且在 PMBOK 第五版中也是没有的。这部分内容是 PMBOK 第六版中新加的两个独立章节,不过内容不多,非常轻松,重点…

AGV移动机器人无人叉车控制器设计

AGV控制器是为移动机器人(AMR、智能叉车等)设计的通用控制器,为移动机器人提供地图构建、定位导航、模型编辑等核心功能。 本方案将移动机器人的核心组件集成于一体,配合功能强大的客户端软件 ,可帮助用户快速实现机器…

【数据结构】Java实现数据结构的前置知识,时间复杂度空间复杂度,泛型类的讲解

文章目录数据结构时间复杂度、空间复杂度包装类、装箱与拆箱泛型擦除机制数据结构 当我们在成为一名程序员的这条道路上努力的时候,我们一定经常听到这个词数据结构。那么究竟什么是数据结构呢?数据结构顾名思义,就是数据结构,数…

[附源码]计算机毕业设计JAVA校园快递管理系统

[附源码]计算机毕业设计JAVA校园快递管理系统 项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybati…

vtkjs中Sample Distance功能

通过 SetSampleDistance () 来设置每条射线的采样步长,默认值为1,单位为世界坐标系单位,数值越小越精细 通过 SetImageSampleDistance () 来设置图像采样距离,默认值为1,即投射光线的间隔数值越小越精细 核心代码如下…