Простой, гибкий и расширяемый логгер для ваших pet-проектов.
npm install fock-logger
read() для запроса данных от пользователя.null/undefined, toString() и цепочка кастомных форматтеров.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}!`);
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.