🚀 python-logging-loki-v2
Modern Python logging handler for Grafana Loki
Documented by Grafana: https://github.com/grafana/loki/pull/16397
Send Python logs directly to Grafana Loki with minimal configuration.
✨ Features
- 📤 Direct Integration - Send logs straight to Loki
- 🔐 Authentication Support - Basic auth and custom headers
- 🏷️ Custom Labels - Flexible tagging system
- ⚡ Async Support - Non-blocking queue handler included
- 🔒 SSL Verification - Configurable SSL/TLS settings
- 🎯 Multi-tenant - Support for Loki multi-tenancy
📦 Installation
pip install python-logging-loki-v2
🎯 Quick Start
Basic Usage
import logging
import logging_loki
handler = logging_loki.LokiHandler(
url="https://loki.example.com/loki/api/v1/push",
tags={"app": "my-application"},
auth=("username", "password"),
version="2"
)
logger = logging.getLogger("my-app")
logger.addHandler(handler)
logger.info("Application started", extra={"tags": {"env": "production"}})
Async/Non-blocking Mode
For high-throughput applications, use the queue handler to avoid blocking:
import logging.handlers
import logging_loki
from multiprocessing import Queue
handler = logging_loki.LokiQueueHandler(
Queue(-1),
url="https://loki.example.com/loki/api/v1/push",
tags={"app": "my-application"},
version="2"
)
logger = logging.getLogger("my-app")
logger.addHandler(handler)
logger.info("Non-blocking log message")
⚙️ Configuration Options
| Parameter | Type | Default | Description |
|---|---|---|---|
url |
str |
required | Loki push endpoint URL |
tags |
dict |
{} |
Default labels for all logs |
auth |
tuple |
None |
Basic auth credentials (username, password) |
headers |
dict |
None |
Custom HTTP headers (e.g., for multi-tenancy) |
version |
str |
"1" |
Loki API version ("0", "1", or "2") |
verify_ssl |
bool |
True |
Enable/disable SSL certificate verification |
🏷️ Labels
Logs are automatically labeled with:
- severity - Log level (INFO, ERROR, etc.)
- logger - Logger name
- Custom tags - From handler and
extra={"tags": {...}}
logger.error(
"Database connection failed",
extra={"tags": {"service": "api", "region": "us-east"}}
)
🔐 Multi-tenant Setup
handler = logging_loki.LokiHandler(
url="https://loki.example.com/loki/api/v1/push",
headers={"X-Scope-OrgID": "tenant-1"},
tags={"app": "my-app"}
)
Based on python-logging-loki by GreyZmeem.
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Metadata
Release files for python-logging-loki-v2 1.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| python_logging_loki_v2-1.1.1.tar.gz | 10.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| python_logging_loki_v2-1.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 17.9 kB
Release files / python_logging_loki_v2-1.1.1.tar.gz
| Download URL | python_logging_loki_v2-1.1.1.tar.gz |
|---|---|
| Size | 10.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
327d539898f2b397814f8bc1b57f0bc8721a6aced802a2f8cf6fd52c0b46d208
|
|
BLAKE2b-256 checksum How to use checksums |
e22b814681aa9857acebd5c70139a270fc560d3332b54e820b7d7cf184617724
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.0.1 CPython/3.11.1
|
Release files / python_logging_loki_v2-1.1.1-py3-none-any.whl
| Download URL | python_logging_loki_v2-1.1.1-py3-none-any.whl |
|---|---|
| Size | 7.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ca07bbcd3245916fd222aa452cc3f9ff4fffc8ee8292a5fb743643437013b46c
|
|
BLAKE2b-256 checksum How to use checksums |
ff57cc4200ae68d141468b361235619791a37927e26e12de02a92335f302ebb9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.0.1 CPython/3.11.1
|