Перейти к содержимому
Разделы
ЯзыкRUEN

v2.1Руководство

Язык запросов

Синтаксис коротких запросов для фильтрации записей: сравнения, подстроки, AND, OR и NOT.

Запрос — это строка, которая превращается в функцию (rec) => boolean. Парсер запроса написан вручную, ничего не вычисляет через eval и не выполняет код из строки.

js
const isProblem = parser.query('level>=warn AND NOT msg~"health"');

Операторы#

ОператорСмыслПример
:равноstatus:404, method:GET
> >= < <=сравнение чисел, уровней и датbytes>1000000, level>=warn
~содержит подстроку без учёта регистраmsg~"timeout"
:5xxмаска класса статусаstatus:5xx
AND OR NOTлогика, скобки разрешены(a OR b) AND NOT c

Два условия подряд без слова между ними означают AND: level>=warn status:5xx.

Что можно сравнивать#

  • Имена ts, level, msg относятся к записи, остальные ищутся в rec.fields.
  • Уровни упорядочены: trace < debug < info < warn < error < fatal.
  • Даты принимаются в виде 2026-10-01 или 2026-10-01T09:00:00Z. Запись ts>2026-10-01 сравнивает с полуночью UTC.
  • Если поля в записи нет, условие ложно, а не ошибка. Исключение — NOT: NOT status:200 истинно для записи без status.

Примеры#

text
level>=error
status:5xx AND path~"/api/"
ts>2026-10-01T09:00:00Z AND ts<2026-10-01T10:00:00Z
(service:db OR service:cache) AND level>=warn

Ошибки в запросе#

Неверный запрос бросает ParseError с кодом E_QUERY_SYNTAX и позицией символа. Запрос проверяется один раз при компиляции, а не на каждой записи.

Строки в кавычках

Значение с пробелом берите в двойные кавычки: msg~"connection reset". Одинарные кавычки не поддерживаются, чтобы запрос без изменений работал внутри shell-команды в одинарных кавычках.

Обновлено: