MCPcopy Index your code
hub / github.com/pydantic/logfire

github.com/pydantic/logfire @v4.37.0 sqlite

repository ↗ · DeepWiki ↗ · release v4.37.0 ↗
4,403 symbols 20,495 edges 254 files 1,475 documented · 33%
README

Pydantic Logfire — Know more. Build faster.

CI codecov pypi license versions Join Slack

From the team behind Pydantic Validation, Pydantic Logfire is an observability platform built on the same belief as our open source library — that the most powerful tools can be easy to use.

What sets Logfire apart:

  • Simple and Powerful: Logfire's dashboard is simple relative to the power it provides, ensuring your entire engineering team will actually use it.
  • Python-centric Insights: From rich display of Python objects, to event-loop telemetry, to profiling Python code and database queries, Logfire gives you unparalleled visibility into your Python application's behavior.
  • SQL: Query your data using standard SQL — all the control and (for many) nothing new to learn. Using SQL also means you can query your data with existing BI tools and database querying libraries.
  • OpenTelemetry: Logfire is an opinionated wrapper around OpenTelemetry, allowing you to leverage existing tooling, infrastructure, and instrumentation for many common Python packages, and enabling support for virtually any language. We offer full support for all OpenTelemetry signals (traces, metrics and logs).
  • Pydantic Integration: Understand the data flowing through your Pydantic Validation models and get built-in analytics on validations.

See the documentation for more information.

Feel free to report issues and ask any questions about Logfire in this repository!

This repo contains the Python SDK for logfire and documentation; the server application for recording and displaying data is closed source.

Using Logfire

This is a very brief overview of how to use Logfire, the documentation has much more detail.

Install

pip install logfire

(learn more)

Authenticate

logfire auth

(learn more)

Manual tracing

Here's a simple manual tracing (aka logging) example:

```python skip-run="true" skip-reason="blocking" from datetime import date

import logfire

logfire.configure() logfire.info('Hello, {name}!', name='world')

with logfire.span('Asking the user their {question}', question='age'): user_input = input('How old are you [YYYY-mm-dd]? ') dob = date.fromisoformat(user_input) logfire.debug('{dob=} {age=!r}', dob=dob, age=date.today() - dob)


[_(learn more)_](https://pydantic.dev/docs/logfire/instrument/add-manual-tracing/)

### Integration

Or you can also avoid manual instrumentation and instead integrate with [lots of popular packages](https://pydantic.dev/docs/logfire/integrations/), here's an example of integrating with FastAPI:

```py skip-run="true" skip-reason="global-instrumentation"
from fastapi import FastAPI
from pydantic import BaseModel

import logfire

app = FastAPI()

logfire.configure()
logfire.instrument_fastapi(app)
# next, instrument your database connector, http library etc. and add the logging handler


class User(BaseModel):
    name: str
    country_code: str


@app.post('/')
async def add_user(user: User):
    # we would store the user here
    return {'message': f'{user.name} added'}

(learn more)

Logfire gives you a view into how your code is running like this:

Logfire screenshot

Contributing

We'd love anyone interested to contribute to the Logfire SDK and documentation, see the contributing guide.

Reporting a Security Vulnerability

See our security policy.

Logfire Open-Source and Closed-Source Boundaries

The Logfire SDKs (we also have them for TypeScript and Rust) are open source, and you can use them to export data to any OTel-compatible backend.

The Logfire platform (the UI and backend) is closed source. You can self-host it by purchasing an enterprise license.

Core symbols most depended-on inside this repo

get
called by 372
logfire/variables/variable.py
configure
called by 299
logfire/_internal/config.py
var
called by 173
logfire/_internal/main.py
span
called by 172
logfire/_internal/main.py
info
called by 133
logfire/_internal/main.py
main
called by 81
logfire/_internal/cli/__init__.py
create
called by 61
logfire/_internal/config_params.py
set_attribute
called by 56
logfire/_internal/main.py

Shape

Function 2,019
Method 1,767
Class 602
Route 15

Languages

Python100%
TypeScript1%

Modules by API surface

tests/test_variables.py472 symbols
tests/test_cli.py300 symbols
tests/test_datasets_client.py153 symbols
tests/test_variable_composition.py128 symbols
logfire/_internal/main.py122 symbols
tests/test_logfire.py114 symbols
tests/test_configure.py105 symbols
logfire-api/logfire_api/__init__.py105 symbols
tests/test_push_variables.py71 symbols
tests/otel_integrations/test_openai.py66 symbols
logfire/variables/abstract.py65 symbols
tests/test_json_args.py63 symbols

Dependencies from manifests, versioned

pyodide0.29.3 · 1×
executing2.0.1 · 1×
opentelemetry-instrumentation0.41b0 · 1×
protobuf4.23.4 · 1×
rich13.4.2 · 1×
typing-extensions4.1.0 · 1×

Datastores touched

(mysql)Database · 1 repos
crudDatabase · 1 repos
ffDatabase · 1 repos

For agents

$ claude mcp add logfire \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact