Python SDK for sending logs to Strayl Cortyx
Project description
Strayl Logging SDK для Python
Минималистичный Python SDK для отправки логов в Strayl Cortyx через API ключи.
📖 Новичок? Начните с QUICKSTART.md — пошаговая инструкция с нуля.
Установка
pip install strayl-logging
Или для локальной разработки:
cd SDK/strayl_logging
pip install -e .
Быстрый старт
from strayl_logging import StraylLogger
# Инициализация логгера
logger = StraylLogger(api_key="st_ваш_ключ")
# Отправка логов
logger.info("Server started", {"port": 8000})
logger.warn("High memory usage", {"usage": "85%"})
logger.error("Database connection failed", {"retry": True})
logger.debug("Processing request", {"request_id": "abc123"})
Получение API ключа
- Зарегистрируйтесь на strayl.dev
- Перейдите в Dashboard
- Откройте вкладку API
- Создайте новый API ключ
- Скопируйте ключ (формат
st_...)
Использование
Базовое использование
from strayl_logging import StraylLogger
logger = StraylLogger(api_key="st_ваш_ключ")
logger.info("Application started")
С контекстом по умолчанию
logger = StraylLogger(
api_key="st_ваш_ключ",
default_context={
"service": "my-service",
"version": "1.0.0",
"environment": "production",
},
)
logger.info("User logged in", {"user_id": 123})
# Отправит: {"service": "my-service", "version": "1.0.0", "environment": "production", "user_id": 123}
Синхронный режим
По умолчанию логи отправляются асинхронно в отдельном потоке. Для синхронной отправки:
logger = StraylLogger(
api_key="st_ваш_ключ",
async_mode=False, # Синхронная отправка
)
Кастомный эндпоинт
logger = StraylLogger(
api_key="st_ваш_ключ",
endpoint="https://custom-endpoint.com/log",
)
Настройка таймаута
logger = StraylLogger(
api_key="st_ваш_ключ",
timeout=5.0, # 5 секунд (по умолчанию 3.0)
)
Отключение локального вывода
По умолчанию логи выводятся локально через print и отправляются на сервер. Чтобы отключить локальный вывод:
logger = StraylLogger(
api_key="st_ваш_ключ",
local_output=False, # Только отправка на сервер, без локального вывода
)
API Reference
StraylLogger
Параметры конструктора
api_key(str, обязательный): API ключ для аутентификации (форматst_...)endpoint(str, опциональный): URL эндпоинта (по умолчанию используется production endpoint)default_context(dict, опциональный): Контекст по умолчанию для всех логовtimeout(float, опциональный): Таймаут запроса в секундах (по умолчанию 3.0)async_mode(bool, опциональный): Асинхронная отправка в отдельном потоке (по умолчанию True)local_output(bool, опциональный): Локальный вывод логов через print (по умолчанию True)
Методы
info(message, context=None)- Отправка информационного логаwarn(message, context=None)- Отправка предупрежденияerror(message, context=None)- Отправка ошибкиdebug(message, context=None)- Отправка отладочного логаlog(level, message, context=None)- Отправка лога с указанным уровнем
Уровни логов
info- Информационные сообщенияwarn- Предупрежденияerror- Ошибкиdebug- Отладочная информация
Безопасность
- API ключи передаются через заголовок
Authorization: Bearer <api_key> - Все запросы выполняются по HTTPS
- Ошибки отправки не ломают приложение (проглатываются молча)
- Логи не содержат чувствительных данных (пароли, токены и т.д.)
Особенности
- Двойной вывод: Логи выводятся локально (через print) и отправляются на сервер
- Неблокирующий: По умолчанию логи отправляются асинхронно
- Безопасный: Ошибки отправки не ломают приложение
- Минималистичный: Один класс, простой API
- Типизированный: Полная поддержка type hints
Примеры использования
В веб-приложении
from flask import Flask
from strayl_logging import StraylLogger
app = Flask(__name__)
logger = StraylLogger(
api_key=os.getenv("STRAYL_API_KEY"),
default_context={"service": "web-app"},
)
@app.route("/")
def index():
logger.info("Homepage accessed")
return "Hello World"
@app.errorhandler(500)
def handle_error(e):
logger.error("Internal server error", {"error": str(e)})
return "Error", 500
В фоновой задаче
from strayl_logging import StraylLogger
logger = StraylLogger(api_key="st_ваш_ключ")
def process_task(task_id):
try:
logger.info("Task started", {"task_id": task_id})
# ... обработка задачи ...
logger.info("Task completed", {"task_id": task_id})
except Exception as e:
logger.error("Task failed", {"task_id": task_id, "error": str(e)})
Требования
- Python >= 3.8
- requests >= 2.28.0
Лицензия
MIT
Поддержка
- GitHub: github.com/AlemzhanJ/strayl-sdk-py
- Документация: strayl.dev/docs
- Dashboard: strayl.dev/dashboard
- Email: support@strayl.dev
Разработка
# Клонировать репозиторий
git clone https://github.com/AlemzhanJ/strayl-sdk-py.git
cd strayl-sdk-py
# Установить в режиме разработки
pip install -e .
# Запустить тесты
python test.py
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file strayl_logging-0.2.0.tar.gz.
File metadata
- Download URL: strayl_logging-0.2.0.tar.gz
- Upload date:
- Size: 480.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
927f831b01816d22ddf75522912a2a4026652656b59658896e69eb5eeefa2203
|
|
| MD5 |
c8fd77015cf5642a6d1fde70043600cd
|
|
| BLAKE2b-256 |
4f877f13c11d32cb0efa1830b708191158d722d302a68deb9d7df0be8d239602
|
File details
Details for the file strayl_logging-0.2.0-py3-none-any.whl.
File metadata
- Download URL: strayl_logging-0.2.0-py3-none-any.whl
- Upload date:
- Size: 7.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
490c26fced4bc06fa93be645aab55b352cc32126715735cde260a0178e828b89
|
|
| MD5 |
a8a4363bf6a86891c1645ebc06ab0b5c
|
|
| BLAKE2b-256 |
7724a2e8033f1779fd4ea3a621f8bce84f9be6250222104d34c51b96c9aad5ae
|