v-simple-logger
v1.1.0
Published
Простой настраиваемый логгер на базе Winston с ротацией файлов
Maintainers
Readme
Simple Logger
Простой, но гибкий логгер на базе Winston 3 с ротацией файлов. Подходит как «включил и забыл», так и для тонкой настройки.
Возможности
- Два готовых пресета вывода:
pretty— человекочитаемый текст (по умолчанию)json— машинно‑читаемый для APM/ELK/Datadog
- Иерархия папок логов
YYYY/MM/DD - Ротация файлов по дате и/или размеру, авто‑очистка по сроку хранения
- Цветной вывод в консоль (ANSI) с подсветкой уровня
- Авто‑создание директорий и fallback в
~/.logs/<app>при ошибке доступа - Кросс‑платформенность (Linux, macOS, Windows) + детект symlink‑ов
- Обработчики
uncaughtExceptionиunhandledRejection - Перекрытие конфигурации через ENV‑переменные
Установка
npm i v-simple-logger
# или
yarn add v-simple-loggerБыстрый старт
1. «Простой» логгер (пресет pretty)
const { defaultLogger } = require('v-simple-logger');
defaultLogger.info('Приложение запущено');2. JSON‑логгер для лог‑агрегатора
const { createLogger } = require('v-simple-logger');
const logger = createLogger({ preset: 'json' });
logger.info('Платёж выполнен', {
user: 'user123',
amount: 500,
currency: 'RUB'
});Перекрытие через ENV
| Переменная | Значение | По умолчанию |
|----------------|---------------------------------|--------------|
| LOG_LEVEL | error … silly | info |
| LOG_DIR | Путь к папке логов | logs |
| LOG_PRESET | pretty | json | pretty |
Любая из них имеет приоритет над переданным в коде конфигом.
Конфигурация
const { createLogger, LEVELS } = require('v-simple-logger');
const logger = createLogger({
level: LEVELS.DEBUG, // Минимальный уровень
logsDir: 'app-logs', // Базовая директория
preset: 'pretty', // Формат вывода
// Формат времени
dateFormat: 'YYYY-MM-DD HH:mm:ss',
useYearMonthDayFolders: true,
locale: 'ru',
// Файлы
useFile: true,
fileNamePattern: 'app-%DATE%.log',
datePattern: 'YYYY-MM-DD',
maxFileSize: '20m',
retentionPeriod: '30d',
zippedArchive: true,
createSymlink: true,
symlinkName: 'current.log',
// Консоль
useConsole: true,
colorizeConsole: true,
// Другое
appName: 'my-service'
});Обработчики исключений
Логгер автоматически регистрирует транспорт для uncaughtException и
unhandledRejection, чтобы последние сообщения не потерялись.
Доступные уровни
silly < debug < verbose < http < info < warn < error
Примеры использования
Структурное логирование (правильный порядок)
logger.info('Платёж выполнен', {
user: 'user123',
action: 'payment',
amount: 500
});Логирование только в файл
const fileLogger = createLogger({ useConsole: false });
fileLogger.info('Записано только в файл');Логирование только в консоль
const consoleLogger = createLogger({ useFile: false });
consoleLogger.debug('Только консоль');Особенности платформ
Windows
- Симлинки отключены по умолчанию, если не доступны (проверяется при старте).
- Для включения создайте приложение с правами администратора или настройте
политику
SeCreateSymbolicLinkPrivilege.
Linux/macOS
- Полная функциональность без ограничений.
- При отсутствии прав на запись логгер использует
~/.logs/<appName>/YYYY/MM/DD.
Лицензия
MIT
