fock-logger - v7.0.1
    Preparing search index...

    fock-logger banner

    fock-logger

    Простой, гибкий и расширяемый логгер для ваших pet-проектов.

    Static Badge GitHub top language GitHub license CI

    npm version npm downloads


    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}!`);

    • 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.


    fock-logger logo