Skip to content

Структурированное логирование и управление логами ​

В RUSEON Core в качестве движка логирования используется библиотека rs/zerolog. Zerolog обеспечивает быстрое JSON-логирование без лишних аллокаций памяти, что критично для стриминговых медиасерверов, где запись логов не должна создавать задержек при обработке видеокадров.


Форматы вывода логов ​

RUSEON Core поддерживает два формата вывода, настраиваемых через config.yaml или переменные окружения:

1. Production JSON формат (По умолчанию) ​

Генерирует структурированные записи NDJSON в stdout, готовые для отправки в Loki, Elasticsearch, Datadog и Fluentbit:

json
{"level":"info","time":"2026-08-14T14:26:32Z","camera_id":"cam_front","fps":25.0,"bitrate_kbps":4096,"message":"Stream ingestion synchronized"}
{"level":"warn","time":"2026-08-14T14:26:35Z","camera_id":"cam_front","subscriber_id":"webrtc_sub_92","message":"Slow consumer detected, skipping P-frame"}

2. Консольный формат (Console Pretty) ​

Человекочитаемый цветной вывод для локальной разработки и интерактивной отладки:

text
2:26PM INF Stream ingestion synchronized camera_id=cam_front fps=25.0 bitrate_kbps=4096
2:26PM WRN Slow consumer detected, skipping P-frame camera_id=cam_front subscriber_id=webrtc_sub_92

Поддерживаемые уровни логирования ​

УровеньВажностьКогда использовать
traceМинимальныйПарсинг каждого NAL-юнита, низкоуровневые аллокации пакетов
debugНизкийДетали согласования RTSP, обмен SDP, обнаружение ключевых кадров
infoСтандартныйСтарт сервера, подключение/отключение камер, часовая ротация файлов
warnСреднийСброс кадров из-за медленного подписчика, повтор RTSP-сокета, нехватка места
errorВысокийОшибка записи на диск, повреждение файла базы данных, невалидный JWT
fatalКритическийНеустранимая ошибка, приводящая к аварийной остановке сервера

Пример конфигурации ​

yaml
logging:
  # Формат: "json" (production) или "console" (разработка)
  format: "json"
  
  # Минимальный уровень: trace, debug, info, warn, error
  level: "info"
  
  # Включение файла и номера строки в логи
  caller: false

Переопределение через переменные окружения:

bash
export RUSEON_LOG_LEVEL=debug
export RUSEON_LOG_FORMAT=console

Связанная документация ​

Released under the MIT License.