FastAPI Anschluss¶
Logfirekombiniert benutzerdefinierte und Drittanbieter-Tools von FastAPI mit der logfire.instrument_fastapi() -Methode.
Installiert¶
Installieren Sie logfire mit fastapi extra:
{{ install_logfire(extras=['fastapi']) }}
Verwendung¶
Installieren Sie für ein minimales Beispiel Uvicorn um es auszuführen:
pip install uvicorn
Sie können es mit python main.py ausführen:
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)
Und dann besuchen http://localhost:8000/helloUPMNAME=world [Bearbeiten | Quelltext bearbeiten] Überprüfen Sie auch das Tagebuch.
OpenTelemetry FastAPI einrichten¶
Das Paket OpenTelemetry FastAPI Instrumentation von Drittanbietern fügt jeder Anforderung einen Span hinzu, der detaillierte Attribute der HTTP-Anforderung enthält, z. B. die vollständige URL und die Endzeiten des Benutzeragenten, sodass Sie sehen können, wie lange es dauern wird, jede Anforderung zu verarbeiten.
[logfire.instrument_fastapi()][logfire. Logfire. instrument_fastapi] Standardmäßig können Sie diesen Test deaktivieren, indem Sie use_opentelemetry_instrumentation=False übergeben.
logfire.instrument_fastapi() akzeptiert auch beliebige zusätzliche Schlüsselwortargumente und gibt sie an die OpenTelemetry FastAPIInstrumentor.instrument_app()-Methode weiter, siehe deren Dokumentation für weitere Details.
Logfire-Plug-In: Protokollieren von Endpunktparametern und Authentifizierungsfehlern¶
logfire.instrument_fastapi() gibt für jede Anforderung einen Span namens FastAPI 参数 aus, der die Zeitdauer anzeigt, die FastAPI benötigt, um die Parameter der Endpunktfunktion in der Anforderung zu parsen und zu validieren und Abhängigkeiten zu lösen, und standardmäßig auch die folgenden Attribute enthält:
-
values: Ordnet die Argumentnamen der Endpunktfunktion einem Wörterbuch der analysierten und überprüften Werte zu. -
errors: Liste der Überprüfungsfehler für alle ungültigen Eingaben.
Sie können diese Funktion anpassen, indem Sie die request_attributes_mapper-Funktion an instrument_fastapi übergeben, so dass sie mit dem Request-oder WebSocket-Objekt zusammen mit dem Standardattributwörterbuch aufgerufen wird Es sollte ein neues Attributwörterbuch zurückgeben oder None zurückgeben, um die Span auf "debug" zu setzen, so dass es standardmäßig verborgen ist z.B.:
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)
!!! Achtung!
[request_attributes_mapper][logfire.Logfire.instrument_fastapi(request_attributes_mapper)] Funktionen können nicht geändert werden 值 bzw.错误 Der Inhalt, aber es kann sicher sein, sie durch neue Werte zu ersetzen.
URL vom Test entfernen¶
Um das Nachverfolgen bestimmter URLs zu vermeiden, können Sie eine durch Kommas getrennte Liste regulärer Ausdrücke angeben, die mit der vollständigen Anforderungs-URL übereinstimmen, die an Folgendes übergeben werden kann:
-
instrument_fastapiwie [excluded_urls][logfire.Logfire.instrument_fastapi(excluded_urls)], zum Beispiel:logfire.instrument_fastapi(app, excluded_urls='/health') -
Die Umgebungsvariable
OTEL_PYTHON_FASTAPI_EXCLUDED_URLS. -
Umgebungsvariable
OTEL_PYTHON_EXCLUDED_URLS(dies gilt auch für andere Tests).
Anforderung-und Antwort-Header erfassen¶
本文总阅读量次