fock-logger
v7.0.1
Published
Simple logger for your pet-project
Downloads
598
Readme
title: К прочтению category: Руководство
fock-logger
Простой, гибкий и расширяемый логгер для ваших pet-проектов.
Установка
npm install fock-loggerОсобенности
- Логирование в консоль и/или файл (с автоматическим созданием директорий).
- Настраиваемые уровни логирования с фильтрацией по приоритету.
- Интерактивный ввод — метод
read()для запроса данных от пользователя. - Гибкое форматирование: встроенные форматтеры для ошибок,
null/undefined,toString()и цепочка кастомных форматтеров. - Временные метки с поддержкой локалей, часовых поясов или собственной функции форматирования.
- Добавление префиксов/суффиксов (например, имя логгера или метка времени).
- Возможность включать/выключать отдельные компоненты (например, временные метки).
- Полная типизация и поддержка IDE.
Быстрый старт
import { Logger, FileService, TimestampService } from "fock-logger";
// 1. Создаём сервисы (оба опциональны)
const fileService = new FileService({ filePath: "./logs/app.log" });
const timestampService = new TimestampService({
timeZone: "Europe/Moscow",
locale: "ru-RU",
});
// 2. Определяем уровни логирования
const levels = {
levels: { debug: 0, info: 1, warn: 2, error: 3 },
level: "info", // будут выводиться только info и выше
};
// 3. Создаём логгер
const logger = new Logger({
name: "my-app",
fileService,
timestampService,
baseLevels: levels,
baseContext: { log: true, writeFile: true },
});
// 4. Логируем
await logger.execute("Сервер запущен", { context: { level: "info" } });
// или с использованием свойства `log`:
await logger.log.info("Сервер запущен");
// 5. Читаем ввод пользователя
const userName = await logger.read("Введите ваше имя:", {
context: { level: "info" },
});
console.log(`Привет, ${userName}!`);API
Основные классы
Logger— основной класс. НаследуетBaseLoggerи реализует методыexecuteиread.BaseLogger— абстрактный базовый класс с общей логикой (форматирование, контекст, уровни).FileService— работа с файлом лога (чтение, запись, перезапись, удаление).TimestampService— генерация временных меток с поддержкой локалей и часовых поясов.FormatterHandler— цепочка форматтеров, применённых к данным.AffixHandler— добавление префиксов/суффиксов (например, имя логгера и временная метка).
Настройка уровней логирования
const levels = {
levels: {
debug: 0,
info: 1,
warn: 2,
error: 3,
},
level: "info",
};Контекст вызова
При каждом вызове execute или read можно передать контекст:
{
context: {
level: 'warn', // уровень для данного сообщения
log: true, // выводить в консоль
writeFile: true, // записывать в файл
separator: '\n' // разделитель между частями сообщения
}
}Кастомный форматтер
import { BaseFormatter, LoggerInput, FormatterHandler } from "fock-logger";
class MyFormatter extends BaseFormatter<{ custom: string }> {
public canFormat(input: LoggerInput): boolean {
return input && typeof input === "object" && "custom" in input;
}
protected format(input: { custom: string }[]): string[] {
return input.map((item) => `[CUSTOM] ${item.custom}`);
}
}
const formatterHandler = new FormatterHandler([
new MyFormatter(),
new DefaultFormatter(),
]);
const logger = new Logger({
// ...
formatterHandler,
});Отключение временных меток
const timestampService = new TimestampService();
timestampService.disable(); // или timestampService.turn(false);
// Теперь execute() будет возвращать строку без временной меткиСсылки
Пакет: npm/fock-logger Документация: fockusty.github.io/logger
Лицензия
MIT © FOCKUSTY
Содействие
Пожалуйста, ознакомьтесь с CONTRIBUTING.md перед отправкой pull request. Мы придерживаемся соглашения LAF и принципов SOLID.
