Главный класс, который предоставляет методы execute (запись сообщения) и read (запрос ввода от пользователя). Он наследует абстрактный BaseLogger и добавляет конкретную реализацию.
Уровни определяются через объект LoggerLevels, который содержит:
levels — соответствие имени уровня числовому приоритету (чем больше число, тем выше приоритет).level — текущий активный уровень. Сообщения с приоритетом меньше этого уровня игнорируются.Пример:
const levels: LoggerLevels<{ debug: 0; info: 1; warn: 2; error: 3 }> = {
levels: { debug: 0, info: 1, warn: 2, error: 3 },
level: "warn", // будут выводиться только warn и error
};
Каждый вызов execute или read принимает объект контекста, который определяет поведение для конкретного сообщения:
level — уровень сообщения (обязателен).log — выводить ли сообщение в консоль (по умолчанию true).writeFile — записывать ли сообщение в файл (по умолчанию false).separator — разделитель между частями сообщения (по умолчанию \n).Контекст может быть переопределён на уровне вызова, при этом он объединяется с базовым контекстом, переданным в конструктор.
Библиотека предоставляет два основных сервиса:
Форматтеры преобразуют входные данные (массив значений) в строку. Встроены:
DefaultFormatter — вызывает toString() у объектов.ErrorFormatter — форматирует ошибки с именем, сообщением, причиной и стеком.NullableFormatter — преобразует null и undefined в строки.FormatterHandler — цепочка форматтеров, которые применяются последовательно.Вы можете создавать свои форматтеры, наследуя BaseFormatter.
Аффиксы — это префиксы или суффиксы, добавляемые к сообщению. Например, имя логгера или временная метка. Библиотека поставляется с:
NamePrefix — добавляет имя логгера.TimestampPrefix — добавляет временную метку.Аффиксы применяются в порядке, заданном в AffixHandler.