- Notifications
You must be signed in to change notification settings - Fork105
Uncomplicated Observability for Python and beyond! 🪵🔥
License
pydantic/logfire
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
From the team behind Pydantic,Logfire is an observability platform built on the same belief as ouropen 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 models and get built-in analytics on validations.
See thedocumentation for more information.
Feel free to report issues and ask any questions about Logfire in this repository!
This repo contains the Python SDK forlogfire
and documentation; the server application for recording and displaying data is closed source.
This is a very brief overview of how to use Logfire, thedocumentation has much more detail.
pip install logfire
logfire auth
Here's a simple manual tracing (aka logging) example:
importlogfirefromdatetimeimportdatelogfire.info('Hello, {name}!',name='world')withlogfire.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)
Or you can also avoid manual instrumentation and instead integrate withlots of popular packages, here's an example of integrating with FastAPI:
importlogfirefrompydanticimportBaseModelfromfastapiimportFastAPIapp=FastAPI()logfire.configure()logfire.instrument_fastapi(app)# next, instrument your database connector, http library etc. and add the logging handlerclassUser(BaseModel):name:strcountry_code:str@app.post('/')asyncdefadd_user(user:User):# we would store the user herereturn {'message':f'{user.name} added'}
Logfire gives you a view into how your code is running like this:
We'd love anyone interested to contribute to the Logfire SDK and documentation, see thecontributing guide.
See oursecurity policy.
About
Uncomplicated Observability for Python and beyond! 🪵🔥