Skip to content

Cost Tracking & Logging

Log requests and bodies asynchronously for analytics and auditing.

from majordomo_llm import get_llm_instance
from majordomo_llm.logging import LoggingLLM, SqliteAdapter, FileStorageAdapter

llm = get_llm_instance("anthropic", "claude-sonnet-4-20250514")

# Local dev: SQLite + local files
db = await SqliteAdapter.create("llm_logs.db")
storage = await FileStorageAdapter.create("./request_logs")
logged = LoggingLLM(llm, db, storage)
resp = await logged.get_response("Hello!")
await logged.close()

Cloud example (Postgres + S3):

from majordomo_llm.logging import LoggingLLM, PostgresAdapter, S3Adapter

db = await PostgresAdapter.create(host="localhost", port=5432, database="llm_logs", user="postgres", password="password")
storage = await S3Adapter.create(bucket="my-llm-logs", prefix="requests")
logged = LoggingLLM(llm, db, storage)

Tips - Redact secrets in prompts/outputs when necessary. - Track api_key_hash/api_key_alias for attribution. - See README for the database schema and adapters.