Ga naar inhoud

FastAPI-interface

Logfirecombineert FastAPI aangepaste en tools van derden met logfire.instrument_fastapi() -methoden.

installeren

Installeer logfire met fastapi extra:

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

gebruik

We hebben hieronder een minimaal voorbeeld. Installeer Uvicorn om het uit te voeren:

pip install uvicorn

Je kunt het uitvoeren met 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)

Bezoek dan http://localhost:8000/hello?name=world en controleer de logboeken.

OpenTelemetry FastAPI instrumentatie

Het OpenTelemetry FastAPI Instrumentation-pakket van derden voegt een span toe aan elk verzoek, dat gedetailleerde eigenschappen bevat over het HTTP-verzoek, zoals de volledige URL en user-agent. Met begin- en eindtijden kunt u zien hoe lang het duurt om elk verzoek te verwerken.

[logfire.instrument_fastapi()][logfire. standaard, Logfire. instrument _ fastapi] past deze detectie toe. U kunt deze uitschakelen door use_opentelemetry_instrumentation=False door te geven.

logfire.instrument_fastapi() accepteert ook eventuele aanvullende zoekwoordargumenten en geeft deze door aan OpenTelemetry FastAPIInstrumentor.instrument_app()-methoden. Zie hun documentatie voor meer details.

Logfire-instrumentatie: logging van eindpuntparameters en validatiefouten

logfire.instrument_fastapi() geeft voor elk verzoek een span genaamd FastAPI 参数 uit, die laat zien hoe lang het duurt voordat FastAPI de parameters van de eindpuntfunctie in het verzoek parseert en valideert en eventuele afhankelijkheden oplost. Standaard bevat de span ook de volgende eigenschappen:

  • values Wijs parameternamen van eindpuntfuncties toe aan een woordenboek met opgeloste en gevalideerde waarden.

  • errors: Een lijst met validatiefouten voor ongeldige invoer.

U kunt de request_attributes_mapper De functie wordt doorgegeven aan instrument_fastapi Om deze functie aan te passen. Deze functie wordt Request of WebSocket Het object wordt samen met het standaard eigenschapswoordenboek aangeroepen. Het moet een nieuw eigenschapswoordenboek retourneren of terugkeren None Zet het span level op "debug" zodat het standaard verborgen is. Bijvoorbeeld:

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)

Aandacht

[request_attributes_mapper][logfire.Logfire.instrument_fastapi(request_attributes_mapper)] Functies mogen niet worden gewijzigd 值 of 错误 Maar het kan ze veilig vervangen door nieuwe waarden.

URL 's uitsluiten van detectie

Om te voorkomen dat bepaalde URL 's worden bijgehouden, kunt u een reeks door komma 's gescheiden reguliere expressies specificeren die overeenkomt met de volledige verzoek-URL. Dit kan worden doorgegeven aan:

  • instrument_fastapi zoals [excluded_urls ][logfire.Logfire.instrument_fastapi(excluded_urls)], bijvoorbeeld:logfire.instrument_fastapi(app, excluded_urls='/health')

  • Omgevingsvariabelen OTEL_PYTHON_FASTAPI_EXCLUDED_URLS.

  • Omgevingsvariabelen OTEL_PYTHON_EXCLUDED_URLS(dit geldt ook voor andere tests).

Verzoek- en antwoordkoppen vastleggen


本文总阅读量次