ホームページ > バックエンド開発 > Python チュートリアル > FastAPI でリクエストのロギングとモニタリングを実装する方法

FastAPI でリクエストのロギングとモニタリングを実装する方法

WBOY
リリース: 2023-07-30 08:29:39
オリジナル
4021 人が閲覧しました

FastAPI でリクエストのログ記録と監視を実装する方法

はじめに:
FastAPI は、Python 3.7 をベースとした高性能 Web フレームワークであり、自動リクエストと応答モデルを含む多くの強力な機能を提供します。検証、セキュリティ、パフォーマンスの最適化など。実際の開発では、デバッグや監視分析のためにアプリケーションにリクエストのログを記録する必要があることがよくあります。この記事では、FastAPI でリクエストのログ記録と監視を実装する方法を紹介し、対応するコード例を示します。

1. 依存関係パッケージをインストールする
始める前に、必要な依存関係パッケージをいくつかインストールする必要があります。ターミナルを開き、次のコマンドを実行します。

pip install fastapi uvicorn loguru
ログイン後にコピー

その中でも、loguru は使いやすいログ ライブラリです。リクエスト ログを記録するために使用します。

2. FastAPI アプリケーションの作成
まず、FastAPI アプリケーションを作成する必要があります。プロジェクト ディレクトリに、main.py という名前のファイルを作成し、次のコードを記述します:

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}
ログイン後にコピー

3. リクエスト ログを記録する
次に、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 ライブラリのロガー オブジェクトをインポートし、ファイル ロガーを追加します。ログ ファイルのパスを logs/request.log として指定し、ログ ファイルの最大サイズを 10MB に設定しました。次に、root() 関数で、logger.info() メソッドを使用してリクエストを記録します。

4. アプリケーションを開始します
main.py ファイルを保存してターミナルに戻り、次のコマンドを実行して FastAPI アプリケーションを開始します:

uvicorn main:app --reload
ログイン後にコピー

ターミナルはアクセス URL を出力します。 http://127.0.0.1:8000 など、アプリケーションの名前。ブラウザでこの URL にアクセスすると、「Hello World」メッセージが表示されます。 logs/request.log ファイルを開くと、リクエスト ログ レコードが表示されます。

5. リクエストの監視
リクエスト ログの記録に加えて、リクエストの処理時間とステータス コードも監視できます。この機能を実装するには、FastAPI が提供するミドルウェアを使用する必要があります。次のコードを 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)
ログイン後にコピー

上記のコードでは、最初に時間モジュールをインポートし、リクエストの処理時間をシミュレートするために root() 関数にスリープ時間を追加します。次に、リクエストの処理時間を計算し、リクエストのステータス コードを記録するロジックを log_request() ミドルウェア関数に追加しました。 shutdown_event() 関数では、以前に追加したロガーを削除します。

ここで、FastAPI アプリケーションを再起動し、ブラウザーでアプリケーションの URL にアクセスします。ブラウザでページを更新し、logs/request.log ファイルを開くと、リクエスト メソッド、URL、ステータス コード、処理時間などのリクエスト ログ レコードが表示されます。

結論:
この記事では、FastAPI でリクエストのログ記録と監視を実装する方法を紹介します。 loguruライブラリを使用してリクエストログを記録し、FastAPIのミドルウェアを使用してリクエストの処理時間とステータスコードを監視します。これらの機能により、アプリケーションのリクエストと応答をより適切に追跡および監視できるようになります。上記は、リクエストのロギングとモニタリングを実装するコード例です。

参考資料:

  • FastAPI 公式ドキュメント: https://fastapi.tiangolo.com/
  • loguru 公式ドキュメント: https://loguru.readthedocs io/

以上がFastAPI でリクエストのロギングとモニタリングを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート