tintshell
v0.0.1
Published
Simple and powerful logger with colored output and progress bars
Maintainers
Readme
TintShell
Потужний та елегантний логер для Node.js з підтримкою кольорового виводу, прогрес-барів та розширеними можливостями форматування.
🚀 Особливості
- 🌈 Кольоровий вивід — підтримка широкого спектру кольорів та стилів тексту
- 📊 Прогрес-бари — інтерактивні прогрес-бари з оцінкою часу завершення
- 🔍 Рівні логування — гнучка система рівнів логування (error, warn, info, debug, success, trace)
- 📁 Логування у файл — підтримка запису логів у файл з автоматичною ротацією
- ⏱️ Таймери та лічильники — вбудовані інструменти для вимірювання продуктивності
- 🌲 Групування — підтримка групування повідомлень для кращої організації виводу
- 📋 Табличний вивід — форматування даних у вигляді таблиць
📦 Встановлення
# Використовуючи npm
npm install tintshell
# Використовуючи yarn
yarn add tintshell
# Використовуючи pnpm
pnpm add tintshell
# Використовуючи bun
bun add tintshell🔧 Швидкий старт
import { Logger } from 'tintshell';
// Створення логера з префіксом
const logger = new Logger('APP');
// Базове логування
logger.info('Запуск програми');
logger.debug('Детальна інформація');
logger.warn('Попередження');
logger.error('Помилка');
logger.success('Успішно виконано');
// Використання прогрес-бару
const bar = logger.createProgressBar(100, {
description: 'Завантаження',
width: 30,
color: Logger.col.brightBlue
});
// Оновлення прогресу
bar.update(50);📚 Документація
Клас Logger
Основний клас для логування повідомлень.
// Створення логера
const logger = new Logger('APP', 'info');
// Зміна рівня логування
logger.setLogLevel('debug');
// Отримання поточного рівня логування
const level = logger.getLogLevel();
// Логування повідомлень різних рівнів
logger.error('Критична помилка', { code: 500 });
logger.warn('Попередження');
logger.info('Інформаційне повідомлення');
logger.debug('Детальна інформація для розробників');
logger.success('Операція успішно завершена');
logger.trace('Найдетальніший рівень логування');
// Логування у файл
logger.enableFileLogging({
filePath: './logs/app.log',
maxSize: 5 * 1024 * 1024, // 5MB
maxFiles: 3,
append: true
});
// Вимкнення логування у файл
logger.disableFileLogging();
// Фільтрація за префіксом
logger.filterByPrefix(['APP', 'DB']);
// Створення дочірнього логера
const dbLogger = logger.child('DB');
// Використання таймерів
logger.time('operation');
// ... виконання операції
logger.timeEnd('operation'); // Виведе час виконання
// Використання лічильників
logger.count('requests'); // requests: 1
logger.count('requests'); // requests: 2
logger.countReset('requests'); // requests: 0
// Групування повідомлень
logger.group('Група повідомлень');
logger.info('Повідомлення в групі');
logger.groupEnd();
// Табличний вивід
logger.table([
{ name: 'Іван', age: 25 },
{ name: 'Марія', age: 30 }
]);Клас ProgressBar
Клас для створення та управління прогрес-барами.
// Створення прогрес-бару напряму
const bar = new ProgressBar(100, 'Завантаження', 30, Logger.col.green, true);
// Або через логер
const bar = logger.createProgressBar(100, {
description: 'Завантаження',
width: 30,
color: Logger.col.brightBlue,
showEstimate: true
});
// Оновлення прогресу
bar.update(50);
// Інкремент прогресу
bar.increment();
bar.increment(5);
// Пауза/відновлення
bar.pause();
bar.resume();
// Завершення прогресу
bar.stop();
// Скидання прогресу
bar.reset();Кольори та стилі
import { Logger } from 'tintshell';
const { col } = Logger;
console.log(`${col.red}Червоний текст${col.reset}`);
console.log(`${col.bgBlue}${col.white}Білий текст на синьому фоні${col.reset}`);
console.log(`${col.bold}${col.green}Жирний зелений текст${col.reset}`);
// Доступні кольори тексту
// col.black, col.red, col.green, col.yellow, col.blue, col.magenta, col.cyan, col.white
// col.brightRed, col.brightGreen, col.brightYellow, col.brightBlue, col.brightMagenta, col.brightCyan, col.brightWhite
// Доступні кольори фону
// col.bgRed, col.bgGreen, col.bgYellow, col.bgBlue, col.bgMagenta, col.bgCyan, col.bgWhite
// col.bgBrightRed, col.bgBrightGreen, col.bgBrightYellow, col.bgBrightBlue, col.bgBrightMagenta, col.bgBrightCyan, col.bgBrightWhite
// Доступні стилі
// col.bold, col.underline, col.reverse, col.blink, col.hidden, col.strikethrough📋 API
Клас Logger
| Метод | Опис |
|-------|------|
| constructor(prefix: string = 'DEV', logLevel: string = 'debug') | Створює новий екземпляр логера |
| setLogLevel(level: string): void | Встановлює мінімальний рівень логування |
| getLogLevel(): string | Повертає поточний рівень логування |
| error(...args: any[]): void | Логує повідомлення рівня error |
| warn(...args: any[]): void | Логує повідомлення рівня warn |
| info(...args: any[]): void | Логує повідомлення рівня info |
| debug(...args: any[]): void | Логує повідомлення рівня debug |
| success(...args: any[]): void | Логує повідомлення рівня success |
| trace(...args: any[]): void | Логує повідомлення рівня trace |
| enableFileLogging(options: FileLogOptions): void | Вмикає логування у файл |
| disableFileLogging(): void | Вимикає логування у файл |
| filterByPrefix(prefixes: string[] | null): void | Фільтрує логи за префіксом |
| child(childPrefix: string): Logger | Створює дочірній логер |
| time(label: string): void | Запускає таймер |
| timeEnd(label: string): void | Зупиняє таймер і виводить результат |
| count(label: string = 'default'): void | Інкрементує лічильник |
| countReset(label: string = 'default'): void | Скидає лічильник |
| group(label: string): void | Починає групу повідомлень |
| groupCollapsed(label: string): void | Починає згорнуту групу повідомлень |
| groupEnd(): void | Закінчує групу повідомлень |
| table(data: any[], columns?: string[]): void | Виводить дані у вигляді таблиці |
| createProgressBar(total: number, options?: ProgressBarOptions): ProgressBar | Створює прогрес-бар |
Клас ProgressBar
| Метод | Опис |
|-------|------|
| constructor(total: number, description: string = '', width: number = 20, color: string = Logger.col.green, showEstimate: boolean = true) | Створює новий прогрес-бар |
| update(current: number): void | Оновлює прогрес до вказаного значення |
| increment(step: number = 1): void | Збільшує прогрес на вказаний крок |
| pause(): void | Призупиняє прогрес-бар |
| resume(): void | Відновлює прогрес-бар |
| stop(): void | Завершує прогрес-бар |
| reset(): void | Скидає прогрес-бар |
🤝 Внесок
Внески вітаються! Будь ласка, відкрийте issue або pull request на GitHub.
