如何在FastAPI中实现请求日志记录和监控
如何在FastAPI中实现请求日志记录和监控
引言:FastAPI是一个基于Python 3.7+的高性能Web框架,它提供了许多强大的功能和特性,包括自动化的请求和响应模型验证、安全性、性能优化等。在实际开发中,我们经常需要在应用程序中记录请求日志以便进行排错和监控分析。本文将介绍如何在FastAPI中实现请求日志记录和监控,并提供相应的代码示例。
一、安装依赖包在开始之前,我们需要安装一些必要的依赖包。打开终端,执行以下命令:
pip install fastapi uvicorn loguru登录后复制
二、创建一个FastAPI应用程序首先,我们需要创建一个FastAPI应用程序。在项目目录下,创建一个名为main.py的文件,并写入以下代码:
from fastapi import FastAPI app = FastAPI() @app.get("/") async def root(): return {"message": "Hello World"}登录后复制
from loguru import logger import uvicorn from fastapi import FastAPI app = FastAPI() @app.on_event("startup") async def startup_event(): logger.add("logs/request.log", rotation="10 MB") @app.get("/") async def root(): logger.info("Hello World") return {"message": "Hello World"} if __name__ == "__main__": uvicorn.run(app, host="0.0.0.0", port=8000)登录后复制
四、启动应用程序保存main.py文件并返回终端,执行以下命令启动FastAPI应用程序:
uvicorn main:app --reload登录后复制
五、监控请求除了记录请求日志,我们还可以监控请求的处理时间和状态码。为了实现这个功能,我们需要使用FastAPI提供的Middleware。在main.py文件中添加以下代码:
from loguru import logger import time import uvicorn from fastapi import FastAPI, Request from fastapi.middleware.cors import CORSMiddleware app = FastAPI() @app.on_event("startup") async def startup_event(): logger.add("logs/request.log", rotation="10 MB") @app.on_event("shutdown") async def shutdown_event(): logger.remove(handler_id="request_logger") @app.middleware("http") async def log_request(request: Request, call_next): start_time = time.time() response = await call_next(request) process_time = time.time() - start_time logger.info( "Request: {method} {url} {status_code} {process_time:.2f}ms", method=request.method, url=request.url, status_code=response.status_code, process_time=process_time * 1000, ) return response @app.get("/") async def root(): logger.info("Hello World") return {"message": "Hello World"} if __name__ == "__main__": uvicorn.run(app, host="0.0.0.0", port=8000)登录后复制
现在,重新启动FastAPI应用程序,并在浏览器中访问应用程序的URL。在浏览器中刷新页面,打开logs/request.log文件,我们将看到包含请求方法、URL、状态码和处理时间的请求日志记录。
结论:本文介绍了如何在FastAPI中实现请求日志记录和监控。我们使用loguru库来记录请求日志,并借助FastAPI的Middleware来监控请求的处理时间和状态码。通过这些功能,我们可以更好地追踪和监控应用程序的请求和响应。以上就是实现请求日志记录和监控的代码示例。
参考资料:
- FastAPI官方文档:https://fastapi.tiangolo.com/
- loguru官方文档:https://loguru.readthedocs.io/
以上就是如何在FastAPI中实现请求日志记录和监控的详细内容,更多请关注每日运维网(www.mryunwei.com)其它相关文章!