首頁 後端開發 Python教學 如何在FastAPI中實現請求日誌記錄和監控

如何在FastAPI中實現請求日誌記錄和監控

Jul 30, 2023 am 08:29 AM
fastapi 監控 請求日誌

如何在FastAPI中實現請求日誌記錄和監控

引言:
FastAPI是一個基於Python 3.7 的高效能Web框架,它提供了許多強大的功能和特性,包括自動化的請求和響應模型驗證、安全性、效能最佳化等。在實際開發中,我們經常需要在應用程式中記錄請求日誌以便進行排錯和監控分析。本文將介紹如何在FastAPI中實作請求日誌記錄和監控,並提供對應的程式碼範例。

一、安裝依賴套件
在開始之前,我們需要先安裝一些必要的依賴套件。開啟終端,執行以下指令:

pip install fastapi uvicorn loguru
登入後複製

其中,loguru是一個易用的日誌記錄庫,我們將使用它來記錄請求日誌。

二、建立一個FastAPI應用程式
首先,我們需要建立一個FastAPI應用程式。在專案目錄下,建立一個名為main.py的文件,並寫入以下程式碼:

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}
登入後複製

三、記錄請求日誌
接下來,我們將使用loguru函式庫來記錄請求日誌。在main.py檔案中加入以下程式碼:

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)
登入後複製

上述程式碼中,我們首先匯入loguru庫的logger對象,並新增一個檔案日誌記錄器。我們指定了記錄日誌檔案的路徑為logs/request.log,並設定了日誌檔案的最大大小為10MB。然後,在root()函數中,我們使用logger.info()方法記錄請求日誌。

四、啟動應用程式
儲存main.py檔案並返回終端,執行以下命令啟動FastAPI應用程式:

uvicorn main:app --reload
登入後複製

終端將輸出應用程式的存取URL,如http: //127.0.0.1:8000。在瀏覽器中造訪該URL,我們將看到"Hello World"訊息。開啟logs/request.log文件,我們將看到請求日誌的記錄。

五、監控請求
除了記錄請求日誌,我們還可以監控請求的處理時間和狀態碼。為了實現這個功能,我們需要使用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)
登入後複製

上述程式碼中,我們首先匯入time模組,並在root()函數中新增了一個睡眠時間,以模擬請求處理時間。然後,我們在log_request()中間件函數中加入了計算請求處理時間和記錄請求狀態碼的邏輯。在shutdown_event()函數中,我們刪除了先前新增的日誌記錄器。

現在,重新啟動FastAPI應用程序,並在瀏覽器中存取應用程式的URL。在瀏覽器中刷新頁面,打開logs/request.log文件,我們將看到包含請求方法、URL、狀態碼和處理時間的請求日誌記錄。

結論:
本文介紹如何在FastAPI中實作請求日誌記錄和監控。我們使用loguru函式庫來記錄請求日誌,並藉助FastAPI的Middleware來監控請求的處理時間和狀態碼。透過這些功能,我們可以更好地追蹤和監控應用程式的請求和回應。以上就是實作請求日誌記錄和監控的程式碼範例。

參考資料:

  • FastAPI官方文件:https://fastapi.tiangolo.com/
  • loguru官方文件:https://loguru.readthedocs. io/
#

以上是如何在FastAPI中實現請求日誌記錄和監控的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

如何在FastAPI中使用Nginx進行反向代理程式和負載平衡 如何在FastAPI中使用Nginx進行反向代理程式和負載平衡 Aug 01, 2023 am 09:44 AM

如何在FastAPI中使用Nginx進行反向代理程式和負載平衡引言:FastAPI和Nginx是兩個非常受歡迎的Web開發工具。 FastAPI是一個高效能的Python框架,而Nginx則是一個強大的反向代理伺服器。結合這兩個工具,可以提高Web應用程式的效能和可靠性。在本文中,我們將學習如何在FastAPI中使用Nginx進行反向代理和負載平衡。什麼是反向代

如何在FastAPI中實現請求的高並發與負載平衡 如何在FastAPI中實現請求的高並發與負載平衡 Jul 31, 2023 pm 01:50 PM

如何在FastAPI中實現請求的高並發和負載平衡引言:隨著互聯網的發展,Web應用程式的高並發成為一個常見的問題。在處理大量請求時,我們需要使用高效的框架和技術來確保系統的效能和可擴展性。 FastAPI是一個高效能的Python框架,可以幫助我們實現高並發和負載平衡。本文將介紹如何利用FastAPI來實現請求的高並發與負載平衡。我們將使用Python3.7

家中監視器一般保存多久 家中監視器一般保存多久 Aug 30, 2023 pm 04:44 PM

家中監視器一般保存一到兩週。詳細介紹:1、更大的儲存容量,可以保存更長時間的錄影;2、硬碟的容量越大,可以保存的錄影時間就越長;3、根據不同地區和法律法規的要求,監控錄影的保存時間可能會有所不同;4、一些高級的監控系統還可以根據運動檢測或特定事件觸發錄像,從而節省存儲空間並提供更有用的錄像。

如何在FastAPI中實現資料庫連線與事務處理 如何在FastAPI中實現資料庫連線與事務處理 Jul 30, 2023 am 11:45 AM

如何在FastAPI中實現資料庫連接和事務處理引言:隨著Web應用程式的快速發展,資料庫連接和事務處理成為了一個非常重要的主題。 FastAPI是一個高效能的PythonWeb框架,因其快速且易於使用而受到開發者的喜愛。在本文中,我們將介紹如何在FastAPI中實現資料庫連接和事務處理,以協助您建立可靠且高效的網路應用程式。第一部分:資料庫連線在FastA

如何在FastAPI中使用Swagger UI展示API文檔 如何在FastAPI中使用Swagger UI展示API文檔 Jul 30, 2023 am 10:45 AM

如何在FastAPI中使用SwaggerUI展示API文件導言:在現代Web開發中,API是不可或缺的一部分。為了方便開發和維護,我們需要提供一個友好且易於使用的API文檔,以便其他開發人員可以了解和使用我們的API。 Swagger是一種受歡迎的API文件格式和工具,它提供了一個互動的UI介面,可以直觀地展示API的細節。在本文中,我將向您展示如何在Fas

用於監控網站變化的Python腳本 用於監控網站變化的Python腳本 Aug 29, 2023 pm 12:25 PM

在當今的數位時代,了解網站上的最新變化對於各種目的至關重要,例如追蹤競爭對手網站上的更新、監控產品可用性或隨時了解重要資訊。手動檢查網站是否有更改可能既耗時又低效。這就是自動化發揮作用的地方。在這篇文章中,我們將探討如何建立Python腳本來監控網站變更。透過利用Python的強大功能和一些方便的庫,我們可以自動化檢索網站內容、與先前的版本進行比較並通知我們任何更改的過程。這使我們能夠保持主動並及時對我們監控的網站上的更新或修改做出反應。設定環境在開始編寫腳本來監控網站變更之前,我們需要設定P

使用FastAPI框架建構國際化的Web應用 使用FastAPI框架建構國際化的Web應用 Sep 29, 2023 pm 03:53 PM

使用FastAPI框架建立國際化的Web應用FastAPI是一個高效能的PythonWeb框架,它結合了Python類型註解和效能較好的非同步支持,使得開發Web應用變得更加簡單、快速和可靠。在建構一個國際化的網路應用程式時,FastAPI提供了方便的工具和理念,讓應用程式能夠輕鬆支援多種語言。下面我將給一個具體的程式碼範例,介紹如何使用FastAPI框架構

如何在FastAPI中實現請求日誌記錄和監控 如何在FastAPI中實現請求日誌記錄和監控 Jul 30, 2023 am 08:29 AM

如何在FastAPI中實現請求日誌記錄和監控引言:FastAPI是一個基於Python3.7+的高效能Web框架,它提供了許多強大的功能和特性,包括自動化的請求和回應模型驗證、安全性、效能最佳化等。在實際開發中,我們經常需要在應用程式中記錄請求日誌以便進行排錯和監控分析。本文將介紹如何在FastAPI中實作請求日誌記錄和監控,並提供對應的程式碼範例。一、安裝依

See all articles