Skip to main content

Logging module for loki

Project description

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"})

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

lokilog-1.0.0.tar.gz (6.2 kB view details)

Uploaded Source

Built Distribution

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

lokilog-1.0.0-py3-none-any.whl (7.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: lokilog-1.0.0.tar.gz
  • Upload date:
  • Size: 6.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.3 CPython/3.13.4 Windows/11

File hashes

Hashes for lokilog-1.0.0.tar.gz
Algorithm Hash digest
SHA256 0beecd8e16f886ad5f8ebb760470399a96e5804060d00c43381e600824116dbd
MD5 6b4113e3c3ec94f7c5d9d9723a71002a
BLAKE2b-256 59e82ba750d9de348408e0d35e85c04484dc1556685c55ea34ebc35b16a969a2

See more details on using hashes here.

File details

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

File metadata

  • Download URL: lokilog-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 7.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.3 CPython/3.13.4 Windows/11

File hashes

Hashes for lokilog-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f14c7a5a761345ddab66f1fd50f66b5679be968dde83865e8bb97eeebe18e9be
MD5 4d20a317a926c5d9b3250855c776ad92
BLAKE2b-256 87e7b5352ff1e1170a3880a533aa60947605b4e3ad400e844b3fea4198f96e2a

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