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

v2.1API

Запись (Record)

Структура объекта записи, который возвращают parseLine и stream, и правила для отсутствующих полей.

Каждая успешно разобранная строка превращается в обычный объект. Он не привязан к разборщику, его можно сериализовать и передавать дальше.

ts
interface Record {
  ts: Date | null;
  level: 'trace' | 'debug' | 'info' | 'warn' | 'error' | 'fatal' | null;
  msg: string;
  fields: { [name: string]: string | number | boolean | null };
  raw: string;
  line: number;
}

Поля#

ПолеОписание
tsМомент времени как Date; null, если в формате нет времени
levelНормализованный уровень; синонимы warning, err, crit приводятся к стандартным
msgТекст сообщения; для многострочных записей содержит переводы строки
fieldsОстальные извлечённые значения
rawИсходный текст строки (у многострочной записи — всех строк)
lineНомер первой строки записи, считая с единицы

Правила#

  1. Свойства ts, level, msg, fields, raw, line есть у каждой записи. Отсутствующее значение — null или пустая строка, но не undefined.
  2. Объект fields создан без прототипа, поэтому ключ с именем __proto__ в логе безопасен и обычное свойство.
  3. Поля шаблона с типом int и float всегда number, при невозможности разобрать строка отбрасывается с E_NO_MATCH.

Сериализация#

js
console.log(JSON.stringify(rec));
// {"ts":"2026-10-01T09:14:07.000Z","level":"error","msg":"connection reset","fields":{"attempt":3},"raw":"...","line":1}

Date превращается в строку ISO 8601 стандартным способом. Чтобы не хранить дубликат текста, удалите raw перед записью: const { raw, ...slim } = rec.

Сравнение уровней

Для порядка уровней используйте sverlo.levelRank(rec.level): функция возвращает число от 0 (trace) до 5 (fatal) и -1 для null.

Обновлено: