ИНТЕГРАЦИЯ / PYTHON

Логирование в Python через REST API

Logger принимает лог одним HTTP-запросом и мгновенно отдаёт его подключённому клиенту через WebSocket. Серверная история не хранится — вы видите событие в момент, когда оно произошло.

Один POST-запросБез хранения логов на сервере
01 / БЫСТРЫЙ СТАРТ

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

Отправьте первое событие из Python за пару минут. Consumer Key выдаётся после регистрации в веб-интерфейсе.

import requests

URL = "https://logger.dp-projects.ru/sendmess"

def log(module: str, mess, key: str = "ваш-consumer-key"):
    requests.post(URL, json={
        "key": key,
        "module": module,
        "mess": mess,
        "mode": "regular",
    }, timeout=5)

log("payment-service", {
    "event": "payment_processed",
    "amount": 1000,
    "status": "success",
})
02 / ИНТЕГРАЦИЯ С ФРЕЙМВОРКОМ

Интеграция с модулем logging

Если в проекте уже используется стандартный logging, достаточно добавить свой Handler — он будет отправлять каждую запись в Logger, не меняя существующий код вызовов logger.info(...).

import logging
import requests

URL = "https://logger.dp-projects.ru/sendmess"

class LoggerAPIHandler(logging.Handler):
    def __init__(self, key: str, module: str = "python-app"):
        super().__init__()
        self.key = key
        self.module = module

    def emit(self, record: logging.LogRecord):
        try:
            requests.post(URL, json={
                "key": self.key,
                "module": self.module,
                "mess": self.format(record),
            }, timeout=3)
        except Exception:
            self.handleError(record)

logger = logging.getLogger("app")
logger.setLevel(logging.INFO)
logger.addHandler(LoggerAPIHandler("ваш-consumer-key"))
logger.info("Сервис запущен")
03 / ЧТО ВАЖНО ЗНАТЬ

Особенности логирования из Python

  1. 01

    Только исходящий HTTP

    Не нужен агент, sidecar или установка пакетов в продакшн — достаточно requests или встроенного http.client.

  2. 02

    Логи не хранятся на сервере

    Logger занимается доставкой, а не архивом. Подключите клиент до отправки сообщений, иначе событие будет некому показать.

  3. 03

    Асинхронно при желании

    Тот же запрос отлично ложится на httpx.AsyncClient, если приложение уже async.

04 / ВОПРОСЫ

Частые вопросы

Нужно ли устанавливать отдельную библиотеку для логирования в Python?

Нет. Logger — это обычный HTTP-эндпоинт, поэтому достаточно requests, httpx или стандартного urllib. Библиотеку можно написать самому за пару десятков строк — пример есть на этой странице.

Как отправить в Logger объект, а не строку?

Параметр mess принимает строку, число, объект или массив. Передайте dict, и клиент Logger покажет его как структурированный JSON с подсветкой.

Сохраняются ли логи на сервере Logger?

Нет, сервер не ведёт архив переданных логов — он доставляет их подключённому клиенту через WebSocket в реальном времени.

05 / ДРУГИЕ ЯЗЫКИ
ГОТОВЫ К ПОДКЛЮЧЕНИЮ?

Поймайте следующее событие.

Откройте клиент, получите Consumer Key и отправьте первый лог из Python.

Начать работу