Логирование для TypeScript: библиотека Winston

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Что такое Winston и зачем он нужен?

Winston — это популярная библиотека для логирования в TypeScript и JavaScript. Она предоставляет гибкую систему записи логов с поддержкой множества транспортов (вывод в консоль, файл, базу данных, HTTP), уровней логирования и форматирования сообщений. В больших проектах логирование критически важно для отладки, мониторинга и аудита действий пользователя или системы. Winston позволяет структурировать логи, фильтровать их по важности и сохранять в удобном для анализа виде.

Как установить Winston в TypeScript

Для установки выполните команду в терминале:

npm install winston

Также рекомендуется установить типы для TypeScript:

npm install --save-dev @types/winston

Основные функции Winston

  • Уровни логирования: error, warn, info, verbose, debug, silly (настраиваются).
  • Транспорты: Console, File, HTTP, MongoDB, Syslog и другие.
  • Форматирование: JSON, простой текст, метки времени, цвета.
  • Асинхронность: не блокирует основной поток.
  • Кастомные профили: создание собственных уровней и транспортов.

Пример кода на TypeScript

import winston from 'winston';

const logger = winston.createLogger({
  level: 'info',
  format: winston.format.json(),
  transports: [
    new winston.transports.Console({
      format: winston.format.simple(),
    }),
    new winston.transports.File({ filename: 'error.log', level: 'error' }),
    new winston.transports.File({ filename: 'combined.log' }),
  ],
});

logger.info('Приложение запущено');
logger.error('Ошибка подключения к базе данных');

Этот код создаёт логгер, который пишет все сообщения уровня info и выше в консоль, ошибки — в error.log, а все логи — в combined.log.

Когда использовать Winston

Winston подходит для любых серверных приложений на Node.js (Express, NestJS, Koa), микросервисов, CLI-утилит и сложных скриптов. Особенно полезен в продакшн-окружении, где требуется централизованное хранение логов, ротация файлов и интеграция с системами мониторинга (ELK, Splunk). Для простых проектов можно использовать встроенный console.log, но Winston даёт контроль и масштабируемость.

Рекомендаций