PyMongo
The logfire.instrument_pymongo() method will create a span for every operation performed using your PyMongo clients.
Install logfire with the pymongo extra:
pip install 'logfire[pymongo]'
uv add 'logfire[pymongo]'
The following example demonstrates how to use Logfire with PyMongo.
If you already have a MongoDB instance running, you can skip this step. Otherwise, you can start MongoDB using Docker with the following command:
docker run --name mongo -p 27017:27017 -d mongo:latest
The following script connects to a MongoDB database, inserts a document, and queries it:
from pymongo import MongoClient
import logfire
logfire.configure()
logfire.instrument_pymongo()
client = MongoClient()
db = client['database']
collection = db['collection']
collection.insert_one({'name': 'MongoDB'})
collection.find_one()
import asyncio
from motor.motor_asyncio import AsyncIOMotorClient
import logfire
logfire.configure()
logfire.instrument_pymongo()
async def main():
client = AsyncIOMotorClient()
db = client['database']
collection = db['collection']
await collection.insert_one({'name': 'MongoDB'})
await collection.find_one()
asyncio.run(main())
The keyword arguments of logfire.instrument_pymongo() are passed to the PymongoInstrumentor().instrument() method of the OpenTelemetry pymongo Instrumentation package, read more about it here.
def instrument_pymongo(
capture_statement: bool = False,
request_hook: Callable[[Span, CommandStartedEvent], None] | None = None,
response_hook: Callable[[Span, CommandSucceededEvent], None] | None = None,
failed_hook: Callable[[Span, CommandFailedEvent], None] | None = None,
kwargs: Any = {},
) -> None
Instrument the pymongo module so that spans are automatically created for each operation.
Uses the
OpenTelemetry pymongo Instrumentation
library, specifically PymongoInstrumentor().instrument(), to which it passes **kwargs.
capture_statement : bool Default: False
Set to True to capture the statement in the span attributes.
A function called when a command is sent to the server.
A function that is called when a command is successfully completed.
A function that is called when a command fails.
**kwargs : Any Default: \{\}
Additional keyword arguments to pass to the OpenTelemetry instrument methods for future compatibility.