コンテンツにスキップ

Fast APIインターフェース

LogfireはFast APIのカスタムおよびサードパーティツールをlogfire.instrument_fastapi() メソッドと組み合わせます。

インストール

fastapi extraを使用して logfire をインストールする:

{{ install_logfire(extras=['fastapi']) }}

使い方

以下に最小の例があります。Uvicornをインストールして実行してください。

pip install uvicorn

python main.py を使用して実行できます。

main.py
import logfire
from fastapi import FastAPI

app = FastAPI()

logfire.configure()
logfire.instrument_fastapi(app)


@app.get("/hello")
async def hello(name: str):
    return {"message": f"hello {name}"}


if __name__ == "__main__":
    import uvicorn

    uvicorn.run(app)

次に、http://localhost:8000/hello?name=worldにアクセスし、ログを確認します。

OpenTelemometry Fast APIパイル挿入

サードパーティのOpenTelemometry Fast API Instrumentationパッケージでは、リクエストごとにスパンが追加され、フルURLやユーザーエージェントなどのHTTPリクエストに関する詳細なプロパティが含まれています。開始時刻と終了時刻によって、各リクエストの処理に必要な時間を確認できます。

[logfire.instrument_fastapi()][logfire.デフォルトではLogfire. device_fastapi]はこの検出を適用します。use_opentelemetry_instrumentation=False を渡すことで無効にすることができます。

logfire.instrument_fastapi() は、任意の追加キーワード引数も受け取り、OpenTelemometry FastAPIInstrumentor.instrument_app() メソッドに渡します。詳細については、そのドキュメントを参照してください。

Logfireパイル:エンドポイントパラメータと検証エラーを記録します

logfire.instrument_fastapi() は、リクエストごとに FastAPI 参数 と呼ばれるスパンを発行します。このスパンは、Fast APIがリクエストのエンドポイント関数パラメータを解析および検証し、依存関係を解決するのにかかる時間を示します。デフォルトでは、スパンには次のプロパティも含まれます。

  • values:エンドポイント関数の引数名を解析済みおよび検証済みの値にマップするディクショナリ。

  • errors:無効な入力の検証エラーのリスト。

経由することができます request_attributes_mapper 関数を渡す instrument_fastapi この関数をカスタマイズします。 Request または WebSocket オブジェクトは、デフォルトのプロパティディクショナリと一緒に呼び出されます。新しいプロパティディクショナリを返すか、 None デフォルトで非表示になるように、スパンレベルを「debug」に設定します。例:

import logfire

app = ...


def request_attributes_mapper(request, attributes):
    if attributes["errors"]:
        # Only log validation errors, not valid arguments
        return {
            "errors": attributes["errors"],
            "my_custom_attribute": ...,
        }
    else:
        # Don't log anything for valid requests
        return None


logfire.configure()
logfire.instrument_fastapi(app, request_attributes_mapper=request_attributes_mapper)

注意する

[request_attributes_mapper ][logfire.Logfire.instrument_fastapi(request_attributes_mapper)]関数は 值 または 错误 の内容を変更しませんが、安全に新しい値に置き換えることができます。

検出からURLを除外する

特定のURLを追跡しないようにするには、コンマで区切られた一連の正規表現を指定します。この正規表現は、完全なリクエストURLと一致します。これは次のように渡すことができます。

  • instrument_fastapi [excluded_urls ][logfire.Logfire.instrument_fastapi(excluded_urls)]、例えば logfire.instrument_fastapi(app, excluded_urls='/health')

  • 環境変数 OTEL_PYTHON_FASTAPI_EXCLUDED_URLS。

  • 環境変数 OTEL_PYTHON_EXCLUDED_URLS(これは他の検出にも適用されます)。

リクエストとレスポンスヘッダーのキャプチャ


本文总阅读量次