विषय पर बढ़ें

Fइंटरफ़ेस

लॉगफायर होगा फास्टएपीआई कस्टम और तीसरे पक्ष के उपकरण और logfire.instrument_fastapi() विधि।

स्थापित करें

उपयोग fastapi अतिरिक्त स्थापना logfire यह क्या है?

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

उपयोग

हमारे पास नीचे एक न्यूनतम उदाहरण है। कृपया स्थापित करें उविकोर्न इसे चलाने के लिए:

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 और लॉग की जाँच करें।

ओपनटेलीमेट्री फास्टएपीआई इंस्ट्रूमेंटेशन

तीसरा पक्ष ओपनटेलीमेट्री फास्टएपीआई इंस्ट्रूमेंटेशन पैकेज प्रत्येक अनुरोध में एक स्पैन जोड़ता है, जिसमें HTअनुरोध के बारे में विस्तृत गुण होते हैं, जैसे कि पूर्ण और उपयोगकर्ता एजेंट। समय शुरू करने और समाप्त करने से, आप देख सकते हैं कि प्रत्येक अनुरोध को संसाधित करने में कितना समय लगता है।

[logfire.instrument_fastapi()][लॉगफायर। डिफ़ॉल्ट रूप से, लॉगफायर। instrument_fastapi] इस डिटेक्शन को लागू करें। आप पास कर सकते हैं use_opentelemetry_instrumentation=False इसे अक्षम करने के लिए।

logfire.instrument_fastapi() यह भी स्वीकार करता है किसी भी अतिरिक्त कीवर्ड मापदंडों और उन्हें पारित करने के लिए OpenTelemetry. FastAPIInstrumentor.instrument_app() विधि। अधिक जानकारी के लिए, कृपया इसके प्रलेखन देखें।

लॉगफायर इंस्ट्रूमेंटेशन: लॉगिंग एंडपॉइंट पैरामीटर और सत्यापन त्रुटियां

logfire.instrument_fastapi() प्रत्येक अनुरोध के लिए एक अनुरोध जारी किया जाएगा FastAPI 参数 एक स्पैन जो दिखाता है कि Fको अनुरोध में एंडपॉइंट फ़ंक्शन मापदंडों को पार्स करने और मान्य करने और किसी भी निर्भरता को हल करने में कितना समय लगता है। डिफ़ॉल्ट रूप से, स्पैन में निम्नलिखित गुण भी होंगे:

  • values हल किए गए और मान्य मानों के शब्दकोश में एंडपॉइंट फ़ंक्शन पैरामीटर नामों को मैप करें।

  • errors: किसी भी अमान्य इनपुट के लिए सत्यापन त्रुटियों की सूची।

आप पास कर सकते हैं request_attributes_mapper फ़ंक्शन को पारित किया गया है instrument_fastapi इस फ़ंक्शन को अनुकूलित करने के लिए। यह फ़ंक्शन होगा Request या WebSocket ऑब्जेक्ट को डिफ़ॉल्ट गुण शब्दकोश के साथ एक साथ कहा जाता है। इसे एक नया गुण शब्दकोश वापस करना चाहिए, या वापस करना चाहिए None स्पैन स्तर को "डिबग" पर सेट करें ताकि यह डिफ़ॉल्ट रूप से छिपा हो। उदाहरण के लिए:

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 को ट्रैक करने से बचने के लिए, आप अल्पविराम से अलग नियमित अभिव्यक्तियों की एक स्ट्रिंग निर्दिष्ट कर सकते हैं जो पूर्ण अनुरोध से मेल खाएगा। इसे पास किया जा सकता है:

  • 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(यह अन्य परीक्षणों पर भी लागू होता है।)

अनुरोध और प्रतिक्रिया हेडर कैप्चर करें


本文总阅读量次