【大模型应用开发-FastAPI框架】(十二) FastAPI 日志输出到文件

一、FastAPI的安装

参考

【大模型应用开发-FastAPI框架】(一)FastAPI概述和安装-CSDN博客

二、日志记录的重要性

在开发和维护应用程序时,我们需要记录应用程序的运行状态和异常情况,以便分析问题、排查错误和进行性能优化。通过记录日志,我们可以实现以下几个目标:

  1. 故障排查:当应用程序出现错误或者异常时,可以通过日志信息追踪问题的根源,并进行故障排除和修复。
  2. 性能优化:通过分析日志信息,我们可以了解应用程序的性能瓶颈,并进行针对性的优化,提高应用程序的性能和响应速度。
  3. 系统监控:通过监控应用程序的日志信息,我们可以了解应用程序的运行状态,及时发现和处理异常情况,保证应用程序的稳定性和可用性。

三、FastAPI 中的日志记录

FastAPI 使用标准的 Python logging 模块来进行日志记录。我们可以通过配置 logger 来指定日志的级别、格式以及输出位置。在默认情况下,FastAPI 的日志信息会输出到控制台。

下面是一个简单的例子,演示如何在 FastAPI 中记录日志:

import logging
import uvicorn

from fastapi import FastAPI

app = FastAPI()

logging.basicConfig(level=logging.INFO)


@app.get("/")
async def read_root():
    logging.info("Hello, world!")
    return {"Hello": "World"}


if __name__ == '__main__':
    uvicorn.run(app='main:app', host="0.0.0.0", port=9000, reload=True, workers=1)

启动后如图:

在上述例子中,我们通过 logging.basicConfig() 方法将日志记录级别设置为 INFO。然后,在根路由处理函数中,使用 logging.info() 方法记录日志信息。

四、将日志输出到文件

除了输出到控制台,我们可能还希望将日志信息输出到文件中,以便于管理和追踪。下面是一种在 FastAPI 中将日志信息输出到文件的方法

下面是一个完整的示例,演示如何将日志信息输出到文件中:

import logging
import uvicorn
from logging.handlers import RotatingFileHandler

from fastapi import FastAPI

app = FastAPI()

# 创建 RotatingFileHandler 实例
file_handler = RotatingFileHandler(filename="app.log", maxBytes=1000000, backupCount=10)

# 配置 logger
logger = logging.getLogger()
logger.addHandler(file_handler)
logger.setLevel(logging.INFO)


@app.get("/")
async def read_root():
    logger.info("Hello, world!")
    return {"Hello": "World"}


if __name__ == '__main__':
    uvicorn.run(app='main:app', host="0.0.0.0", port=9000, reload=True, workers=1)

运行访问完后,日志将记录在app.log中

在上述示例中,我们使用 RotatingFileHandler 类将日志信息输出到 app.log 文件中。文件大小超过 1MB 时,会自动创建备份文件,并保留最近的 10 个备份文件。

  • 17
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

forest_long

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值