The best Python observability tool! 🪵🔥
Project description
Pydantic Logfire — Uncomplicated Observability
From the team behind 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.
- Pydantic Integration: Understand the data flowing through your Pydantic 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
Authenticate
logfire auth
Manual tracing
Here's a simple manual tracing (aka logging) example:
import logfire
from datetime import date
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)
Integration
Or you can also avoid manual instrumentation and instead integrate with lots of popular packages, here's an example of integrating with FastAPI:
import logfire
from pydantic import BaseModel
from fastapi import FastAPI
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'}
Logfire gives you a view into how your code is running like this:
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.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file logfire-0.50.0.tar.gz
.
File metadata
- Download URL: logfire-0.50.0.tar.gz
- Upload date:
- Size: 221.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.0 CPython/3.12.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 18f19822b67459a9da1f9eabe5489930f92874c6ae1632a2adfe62ffa63b4be2 |
|
MD5 | 864bbe672247eda51ece02c8d1c51302 |
|
BLAKE2b-256 | a1d469f959654b7bef0f69532b22e65465f1cd2e47ffb5f005f5addf4427aca3 |
File details
Details for the file logfire-0.50.0-py2.py3-none-any.whl
.
File metadata
- Download URL: logfire-0.50.0-py2.py3-none-any.whl
- Upload date:
- Size: 154.5 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.0 CPython/3.12.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0cc9c4773c7fa43f2d65d38c9431fb75853e4605fb92897c542358c6243c6478 |
|
MD5 | 8c9bc71d16df85257a1f01803cf64860 |
|
BLAKE2b-256 | c1a13a978996661feefc18d1da285e97b314ba6084b6f5b17e96a7bf7160c756 |