Skip to main content

lokilog

Lightweight, non-blocking Python logging handler for Grafana Loki.

Features

  • Non-blocking: Uses a background thread to ensure logging never stalls your application
  • Binary Format: Supports Protobuf + Snappy compression
  • Smart Labels: Promotes specific fields from extra to Loki labels to avoid high cardinality issues.

Dependencies

  • requests
  • cramjam (for Snappy compression)

Quick Start

Basic Usage

from lokilog import make_loki_handler
import logging

handler, listener = make_loki_handler(
    url="http://localhost:3100",
    labels={"app": "my_service", "env": "dev"},
    extracted_labels=["user_id"]
)
listener.start()

logger = logging.getLogger("my_service")
logger.addHandler(handler)

logger.info("User logged in", extra={"user_id": "123"})

Advanced Config (dictConfig)

logging.config.dictConfig({
    "version": 1,
    "handlers": {
        "loki": {"()": lambda: handler},
    },
    "loggers": {
        "app": {"handlers": ["loki"], "level": "DEBUG"},
    },
})

lokilog (RU)

Легковесный неблокирующий логгер для Grafana Loki.

Особенности

  • Не блокирует поток: Вся сетевая работа вынесена в фоновый поток
  • Бинарный протокол: Поддержка Protobuf + Snappy.
  • Умные лейблы: Возможность прокидывать поля из extra напрямую в индексы Loki.

Зависимости

  • requests
  • cramjam (для сжатия Snappy)

Быстрый старт

Простой пример

from lokilog import make_loki_handler
import logging

handler, listener = make_loki_handler(
    url="http://localhost:3100",
    labels={"app": "my_service", "env": "dev"},
    extracted_labels=["user_id"]
)
listener.start()

logger = logging.getLogger("my_service")
logger.addHandler(handler)

logger.info("Пользователь вошел", extra={"user_id": "123"})

Metadata

Release files for lokilog 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for lokilog 1.0.0
File Size Uploaded
lokilog-1.0.0.tar.gz 6.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for lokilog 1.0.0
File Interpreter ABI Platform
lokilog-1.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 14.0 kB

Release files / lokilog-1.0.0.tar.gz

Download URL lokilog-1.0.0.tar.gz
Size 6.2 kB
Tags Source
SHA-256 checksum
How to use checksums
0beecd8e16f886ad5f8ebb760470399a96e5804060d00c43381e600824116dbd
BLAKE2b-256 checksum
How to use checksums
59e82ba750d9de348408e0d35e85c04484dc1556685c55ea34ebc35b16a969a2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.1.3 CPython/3.13.4 Windows/11

Release files / lokilog-1.0.0-py3-none-any.whl

Download URL lokilog-1.0.0-py3-none-any.whl
Size 7.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f14c7a5a761345ddab66f1fd50f66b5679be968dde83865e8bb97eeebe18e9be
BLAKE2b-256 checksum
How to use checksums
87e7b5352ff1e1170a3880a533aa60947605b4e3ad400e844b3fea4198f96e2a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.1.3 CPython/3.13.4 Windows/11

Release history Release notifications | RSS feed

This release

1.0.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page