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:
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:
-
valuesWijs 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_fastapizoals [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¶
本文总阅读量次