Skip to main content

Handler для библиотек logging и loguru для отправки логов в Loki, поддерживает ассинхронную отправку батчами в отличии от конкрутенов

Project description

Импорт

from async_loki_handler import LokiHandler
  • _Пример использования c logging:
import logging
from src.async_loki_handler import LokiHandler


if __name__ == "__main__":

    loki_handler = LokiHandler(
        url="http://127.0.0.1:3100/loki/api/v1/push",
        labels={"app": "logging"},
        batch_size=1000,
        extra_label_keys=["action", "endpoint", "status_code"],
    )

    # Настройка логирования
    logging.basicConfig(
        level=logging.INFO,
        format='%(asctime)s - %(levelname)s - %(message)s',
        handlers=[
            logging.StreamHandler(), # <- Добавили вывод в консоль
            logging.FileHandler('../content_generator.log', encoding='utf-8'), # <- Добавили запись в файл
            loki_handler,  # <- Добавили отправку на сервер с Loki

        ]
    )

    logger = logging.getLogger(__name__)

    # Настройка для async_loki_handler
    logger.setLevel(logging.DEBUG)

    logger.info(
        "API request completed",
        extra={"data": {
            "action": "api_call",  # → label
            "endpoint": "/users/create",  # → label
            "status_code": "200",  # → label
            "response_time": 0.45,  # → extra в JSON
            "user_name": "yehor",  # → extra в JSON
            "custom_field": "value"  # → extra в JSON
        }}
    )
    logger.info(
        "Some event",
        extra={
            "user_id": "12345",  # попадёт (стандартное поле)
            "custom_field": "value"  # НЕ попадёт (не в extra_label_keys)
        }
    )
    logger.debug("LokiHandler - logging", )
    logger.info("Тестируем logging с библиотекой LokiHandler", )
  • _Пример использования c loguru:
import sys
from loguru import logger
from async_loki_handler import LokiHandler

if __name__ == "__main__":
    logger.remove()

    loki_handler = LokiHandler(
        url="http://127.0.0.1:3100/loki/api/v1/push",
        labels={"app": "loguru"},
        extra_label_keys=["action"],
    )

    # Простой строковый формат (без функции)
    console_format = (
        "<green>{time:YYYY-MM-DD HH:mm:ss.SSS}</green> | "
        "<level>{level:<8}</level> | "
        "<cyan>{name}:{function}:{line}</cyan> - "
        "<level>{message:<30}</level>"
        " | <cyan>{extra}</cyan>"  # ← с разделителем и цветом
    )

    logger.add(sys.stderr, format=console_format, colorize=True)
    logger.add(loki_handler, format="{message}")

    # Тесты
    logger.info("Simple message")
    logger = logger.bind(extra={"action": "test", "account": "user"})
    logger.info("Login success")
    logger.warning("Warning message")
    logger.bind(user_id="999").error("Error occurred")

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

async_loki_handler-0.0.9.tar.gz (12.1 kB view details)

Uploaded Source

Built Distribution

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

async_loki_handler-0.0.9-py3-none-any.whl (11.6 kB view details)

Uploaded Python 3

File details

Details for the file async_loki_handler-0.0.9.tar.gz.

File metadata

  • Download URL: async_loki_handler-0.0.9.tar.gz
  • Upload date:
  • Size: 12.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.18

File hashes

Hashes for async_loki_handler-0.0.9.tar.gz
Algorithm Hash digest
SHA256 921c138a9ced26db14b5abd95017bbc30f847e5e8863df9d2f2c997691ea0547
MD5 e98265daa688e81b55f22015211daee5
BLAKE2b-256 320421f6d0ca7194bf8345dae5e282b4621cad5bb19eab750e3ea9caa69f3e9a

See more details on using hashes here.

File details

Details for the file async_loki_handler-0.0.9-py3-none-any.whl.

File metadata

File hashes

Hashes for async_loki_handler-0.0.9-py3-none-any.whl
Algorithm Hash digest
SHA256 bd60e5790f6b7f50f4cc32d17177e0877430b7c8448b2346ef4d7078137e9365
MD5 6b009fcdfde1003762ec522ecc8faabe
BLAKE2b-256 fc14a13ce2bc46185f06f2fcc7805e948e3f40c6efa0459e448826e1d9342b84

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