Skip to main content

Ultra-performant Loki logger for Python applications (asyncio + aiohttp)

Project description

Loki Console Logger for Python 🚀

PyPI version Python versions License

A high-performance console logger for Python that automatically sends all print, logging, exceptions, and custom events to Grafana Loki — using fully asyncio + aiohttp.
Ideal for observability, real-time debugging, and log aggregation in microservices or modern async applications.


✨ Features

  • 🚀 Fully asynchronous (non-blocking) sending with aiohttp
  • 🧠 Dynamic and static labels per log stream
  • 🧹 Batching and auto-flush for high throughput
  • 💥 Captures all print() calls, logging messages and unhandled exceptions
  • 🔥 Lightweight, zero external dependencies (only aiohttp)
  • 🛡️ Robust error handling, resilient to network failures

📦 Installation

pip install loki-console-logger-python

🚀 Quickstart

from loki_console_logger_python import LokiLogger
from loki_console_logger_python.config import LokiLoggerOptions

options = LokiLoggerOptions(
    url="https://loki.elvenobservability.com/loki/api/v1/push",
    tenant_id="your-tenant-id",
    app_name="your-application",
    auth_token="your-optional-token",
    batch_size=10,             # Optional (default 10)
    flush_interval=2,          # Optional (default 2 seconds)
    labels={"env": "production"},
    dynamic_labels={"hostname": lambda: "server-001"},
)

logger = LokiLogger(options)

# Track custom events
logger.track_event("user_signup", {"user_id": 123})

# Capture print automatically
print("Hello from Python!")

# Capture uncaught exceptions automatically
raise Exception("Test error!")

⚙️ Configuration Options

Option Description Default
url URL to Loki HTTP Push API
tenant_id X-Scope-OrgID for multi-tenancy
app_name Application name label
auth_token Bearer token for authorization None
batch_size Max events before flushing 10
flush_interval Max time (seconds) before flushing 2
labels Fixed labels per stream {}
dynamic_labels Dynamic labels (functions) {}

🤝 Contributing

Contributions are welcome! Feel free to open issues, submit pull requests, or suggest new features.

Let's make observability in Python faster and better! 🚀

  1. Fork this repo
  2. Create a feature branch
  3. Submit a PR!

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.


Created with ❤️ by Leonardo Zwirtes

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

loki_console_logger_python-1.0.0.tar.gz (4.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

loki_console_logger_python-1.0.0-py3-none-any.whl (7.4 kB view details)

Uploaded Python 3

File details

Details for the file loki_console_logger_python-1.0.0.tar.gz.

File metadata

File hashes

Hashes for loki_console_logger_python-1.0.0.tar.gz
Algorithm Hash digest
SHA256 15940a406d9be4fca1be71b82eb9f72517813b87146e54e55132f3ef75c766f0
MD5 2a95bde2edf5c2a9a122ac6022718bae
BLAKE2b-256 82a3ca9eb485fa676979d0a993b1b0294c4e3d06b90bcab35b75dfee77c63143

See more details on using hashes here.

File details

Details for the file loki_console_logger_python-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for loki_console_logger_python-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b4c3a0ae9468a5122d060716978e5feaecbc36110fecba237f1bf0bb276939d8
MD5 34f68679285b0bb75be37de283aedf6f
BLAKE2b-256 7e2b96316ba7157b1376db791924626f4db41db545554b8c2f388c1eabfe66e4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page