Open Source
structured_log
Структурированное логирование для Dart и Flutter в духе Python structlog: JSON-логи с контекстом, просмотр логов прямо в приложении и опциональный self-hosted сервер для команды.
Логи, которые можно читать и искать
structured_log — экосистема структурированного логирования для Dart и Flutter, вдохновлённая Python-библиотекой structlog. Вместо строк — события с контекстом в JSON, которые удобно фильтровать, искать и анализировать.
import 'package:structured_log/structured_log.dart';
void main() {
getLogger().info('user_login', context: {'user_id': 42});
}
Два способа использования
Автономно — без сети
Библиотека и встроенный просмотрщик логов работают полностью внутри приложения, без сервера:
| Пакет | Назначение |
|---|---|
structured_log |
JSON-логирование: привязка контекста, correlation-поля, процессоры, маршрутизация по нескольким sink. Зависит только от meta |
structured_log_flutter |
Headless-ядро просмотрщика: LogBuffer и фильтруемый LogViewerController без привязки к дизайн-системе |
structured_log_material, _fluent, _cupertino |
Готовые просмотрщики с поиском и фильтрами в стилях Material 3, Fluent UI и Cupertino |
С self-hosted сервером — когда нужна команда
Когда логи нужно собирать централизованно и искать всей командой, подключается собственный сервер — альтернатива SaaS-платформам и тяжёлому ELK-стеку в той же Dart-экосистеме:
structured_log_http— отправляет записи на сервер пачками, с повторами и экспоненциальной задержкой, через ограниченный буфер.structured_log_server— мультитенантный сервер на shelf: приём, хранение (SQLite или PostgreSQL через drift), поиск и live-tail логов через SSE.structured_log_admin_client— Flutter-приложение для операторов: дашборд, управление ресурсами, живой поиск по логам, пользователи и журнал аудита.
Под капотом сервера
- Модель доступа: пользователи, группы, команды, проекты и секретные ключи проектов; роли и scope (RBAC).
- Токены в стиле OAuth2/OIDC с отзывом через
token_versionи rate limiting на эндпоинтах аутентификации. - Квоты хранения на проект и административный журнал аудита.
- Админ-клиент и сервер общаются только через документированный HTTP/JSON-контракт.
Установка
dependencies:
structured_log: ^0.2.0
Руководства по встраиванию, администрированию и архитектуре — на сайте проекта.