Версия 2.4.0 — Поддержка Async & S3 Sinks

Стриминг и форматирование логов в реальном времени

LogFlow — это высокопроизводительная Python CLI-утилита для отслеживания, мгновенной фильтрации, асинхронной трансформации и красивой визуализации логов в вашей консоли.

$ pip install logflow-cli
logflow --watch app.log --format rich --level DEBUG
[19:45:01.002] INFO LogFlow Engine initialized v2.4.0 (Python 3.11.4)
[19:45:01.015] INFO Loaded config from "./logflow.yaml" (3 active sinks)
[19:45:01.040] DEBUG Watching file "/var/log/app/services.log" [inotify active]
Преимущества

Всё для безупречной работы с логами

Создан разработчиками для разработчиков: от локальной отладки до продуктовых серверов.

Нулевой оверхед (Async I/O)

Построен на asyncio и C-ускорителях parsing'а. Способен прокачивать до 120,000 логов в секунду при минимальном потреблении CPU.

🛠

YAML/TOML Пайплайны

Гибкое описание цепочек обработки: маскирование персональных данных (REDACT), конвертация формата, фильтрация по уровню и условиям.

📡

Мульти-Приемники (Sinks)

Маршрутизируйте логи одновременно в терминал, локальные файлы, AWS S3, Grafana Loki, Telegram и Slack Webhooks.

🎨

Rich Подсветка & JSON

Автоматическое форматирование JSON payload, встроенная подсветка Python traceback, цветов и структур с помощью Rich UI.

Установка

Разверните LogFlow за пару секунд

Выберите ваш любимый менеджер пакетов Python или запустите через Docker container.

# Установка через стандартный менеджер пакетов pip
pip install logflow-cli

# Проверка успешной установки
logflow --version
# Мгновенная установка в виртуальное окружение с помощью uv
uv add logflow-cli

# Запуск без установки в глобальную систему
uvx logflow --watch ./app.log
# Добавление зависимости в проект Poetry
poetry add logflow-cli

# Запуск CLI внутри окружения
poetry run logflow --config logflow.yaml
# Изолированная системная установка CLI утилиты
pipx install logflow-cli
# Запуск LogFlow в Docker контейнере с пробросом папки логов
docker run -it --rm \
  -v $(pwd)/logs:/var/log/app \
  ghcr.io/logflow/logflow:latest \
  --watch /var/log/app/*.log --format json
Конфигурация

Гибкие декларативные YAML-пайплайны

Настраивайте правила обработки, маскирование секретов и приемники логов в файле logflow.yaml

version: '2'

inputs:
  - type: file
    path: '/var/log/nginx/*.log'
    follow: true

filters:
  - level_gte: INFO
  - exclude_regex: '/healthz|/metrics'

transforms:
  - redact_keys: ['password', 'access_token', 'secret']
  - add_labels:
      env: 'production'
      node_id: 'node-worker-01'

sinks:
  - type: stdout
    format: rich
    color_theme: catppuccin-mocha
version: '2'

filters:
  - level_gte: ERROR
  - match_regex: 'DatabaseConnectionError|TimeoutException'

sinks:
  - type: slack_webhook
    url: '${SLACK_WEBHOOK_URL}'
    channel: '#alerts-prod'
    rate_limit: '5/min'
version: '2'

sinks:
  - type: s3
    bucket: 'company-audit-logs'
    region: 'eu-central-1'
    buffer_time_seconds: 60
    compression: 'gzip'

📥 inputs

Источники лог-файлов, стандартный ввод (stdin) или докер-контейнеры. Поддерживает glob-паттерны.

🔍 filters

Условия прохождения логов: минимальный уровень (DEBUG/INFO/ERROR), регулярные выражения и исключения.

🔐 transforms

Трансформация структур JSON: автоматическое скрытие приватных токенов (REDACT) и добавление тегов.

🚀 sinks

Целевые приемники: терминал, файлы, Grafana Loki, Webhooks и хранилища S3.

Справочник CLI

Параметры и флаги командной строки

Полная документация опций запуска утилиты logflow

-w, --watch <path> String / Glob

Отслеживать изменения в файле или по glob-паттерну (аналог tail -f).

По умолчанию: stdin Пример: --watch "/var/log/*.log"
-c, --config <file> Path

Путь к файлу конфигурации YAML/TOML с описанием пайплайнов.

По умолчанию: ./logflow.yaml Пример: --config prod.yaml
-l, --level <LEVEL> Enum

Минимальный уровень логов для отображения: DEBUG, INFO, WARN, ERROR, CRITICAL.

По умолчанию: INFO Пример: --level WARN
-g, --grep <regex> Regex

Фильтровать строки лога по регулярному выражению.

По умолчанию: None Пример: --grep "5[0-9]{2} Internal"
-x, --exclude <regex> Regex

Исключить из вывода строки, совпадающие с выражением.

По умолчанию: None Пример: --exclude "bot|ping"
-f, --format <type> Enum

Формат вывода логов: rich (цветной CLI), json, raw, csv.

По умолчанию: rich Пример: --format json
-o, --output <sink> String

Направление вывода данных (stdout, file://logs.txt, s3://bucket/path).

По умолчанию: stdout Пример: --output file://out.json
--buffer-size <bytes> Integer

Размер внутреннего асинхронного буфера в байтах при высоком потоке данных.

По умолчанию: 65536 (64KB) Пример: --buffer-size 1048576
Вопросы & Ответы

Часто задаваемые вопросы

Все ответы на популярные технические вопросы о LogFlow

В отличие от tail -f, LogFlow умеет парсить структуры JSON в реальном времени, производить безопасное скрытие секретов (REDACT), подсвечивать Python Traceback, асинхронно отправлять фильтрованные логи в несколько систем одновременно (Slack, S3, Loki) и обрабатывать сразу группы лог-файлов по glob-маске.

LogFlow требует Python 3.9 или выше. Благодаря асинхронному движку на asyncio и C-модулям парсинга (ujson/orjson), утилита потребляет менее 25-30 МБ оперативной памяти даже при обработке потока в 100 000 строк в секунду.

Да! LogFlow поставляется с Python API. Вы можете импортировать import logflow прямо в вашем приложении и создавать асинхронные обработчики логов для logging или loguru.

Официальный Docker-образ доступен на GHCR: ghcr.io/logflow/logflow:latest. Вы можете монтировать тома с логами или использовать LogFlow как Sidecar-контейнер для перенаправления stdout контейнеров в ваш S3-архив.

Да, LogFlow автоматически раскрывает переменные окружения вида ${SLACK_WEBHOOK_URL} или ${AWS_SECRET_ACCESS_KEY} внутри файлов конфигурации.

Попробуйте LogFlow в действии прямо сейчас

Установите за одну команду и настройте ваш первый асинхронный стриминг логов менее чем за минуту.