Skip to main content

Error Explorer SDK for FastAPI

Project description

Error Explorer FastAPI SDK

Official FastAPI integration for Error Explorer error tracking.

Installation

pip install error-explorer-fastapi

Quick Start

from fastapi import FastAPI
from error_explorer import ErrorExplorer
from error_explorer_fastapi import ErrorExplorerMiddleware

# Initialize Error Explorer
ErrorExplorer.init({
    "token": "your-project-token",
    "environment": "production",
})

# Create FastAPI app with middleware
app = FastAPI()
app.add_middleware(ErrorExplorerMiddleware)

@app.get("/")
async def root():
    return {"message": "Hello, World!"}

Using setup_error_explorer

For convenience, you can use the setup function:

from fastapi import FastAPI
from error_explorer import ErrorExplorer
from error_explorer_fastapi.middleware import setup_error_explorer

app = FastAPI()
ErrorExplorer.init({"token": "your-token"})
setup_error_explorer(app)

Configuration

The middleware accepts several configuration options:

app.add_middleware(
    ErrorExplorerMiddleware,
    # Capture user info from request.state.user
    capture_user=True,
    # Send PII (email, IP address)
    send_default_pii=False,
    # Capture 404 errors
    capture_404=False,
    # Capture 403 errors
    capture_403=False,
)

Features

Automatic Error Capture

All unhandled exceptions are automatically captured:

@app.get("/error")
async def trigger_error():
    raise ValueError("Something went wrong")
    # This is automatically captured

Request Breadcrumbs

HTTP requests are logged as breadcrumbs:

→ GET /api/users
← 200 OK

User Context

Set user context via request state (typically done by auth middleware):

@app.middleware("http")
async def auth_middleware(request: Request, call_next):
    user = await get_current_user(request)
    request.state.user = user  # User context captured automatically
    return await call_next(request)

Logging Handler

Use the logging handler to capture log messages:

import logging
from error_explorer_fastapi import ErrorExplorerHandler

# Add handler to root logger
handler = ErrorExplorerHandler(level=logging.WARNING)
logging.getLogger().addHandler(handler)

# Now WARNING and above are captured
logging.warning("This will be a breadcrumb")
logging.error("This will be captured as an event")

Event Filtering with before_send

Use the before_send callback to filter or modify events before they're sent:

def before_send(event):
    # Drop events from health check endpoints
    if event.get("request", {}).get("url", "").startswith("/health"):
        return None  # Drop the event

    # Add custom tags
    event["tags"] = event.get("tags", {})
    event["tags"]["service"] = "api"

    return event

ErrorExplorer.init({
    "token": "your-token",
    "before_send": before_send,
})

Manual Error Capture

from error_explorer import ErrorExplorer

@app.get("/process")
async def process():
    try:
        await risky_operation()
    except Exception as e:
        ErrorExplorer.get_client().capture_exception(e)
        raise HTTPException(status_code=500, detail="Error occurred")

Adding Context

from error_explorer import ErrorExplorer, Breadcrumb

@app.get("/checkout")
async def checkout():
    client = ErrorExplorer.get_client()

    # Add custom breadcrumb
    client.add_breadcrumb(Breadcrumb(
        message="User started checkout",
        category="checkout",
        data={"cart_items": 5}
    ))

    # Set additional context
    client.set_context("order", {
        "total": 99.99,
        "currency": "USD"
    })

    return await process_checkout()

Async Support

The middleware is fully async-compatible:

@app.get("/async-operation")
async def async_operation():
    result = await some_async_function()
    return {"result": result}

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

error_explorer_fastapi-1.2.0.tar.gz (9.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

error_explorer_fastapi-1.2.0-py3-none-any.whl (6.9 kB view details)

Uploaded Python 3

File details

Details for the file error_explorer_fastapi-1.2.0.tar.gz.

File metadata

  • Download URL: error_explorer_fastapi-1.2.0.tar.gz
  • Upload date:
  • Size: 9.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for error_explorer_fastapi-1.2.0.tar.gz
Algorithm Hash digest
SHA256 0b42380cb25ce07ab88c7f07fffa1d30b52c39a1cc967c38404475464eb987fe
MD5 ae92c28d008867c8e0a47116923511d1
BLAKE2b-256 067d8ca6e2c5090395cc9243b6b0a9b9f648075e5ea42762d36af42030197b55

See more details on using hashes here.

File details

Details for the file error_explorer_fastapi-1.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for error_explorer_fastapi-1.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 52bd2d7e3d8bd4be26f80279b019cf6160e1b1b6922dd09a31a80e099951f3a8
MD5 66859d0acbd9e37e070d6f37915e2802
BLAKE2b-256 506d456fc8b25b767d29e1162366b629413cfde787c98ba91bd4807e6de6793a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page