Registro em TypeScript: melhores bibliotecas e ferramentas em 2024

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Registro para TypeScript: melhores soluções

O registro é um componente crítico de qualquer aplicação em produção. Para o ecossistema TypeScript, existem várias bibliotecas, cada uma oferecendo um conjunto único de recursos. Neste artigo, veremos as cinco melhores soluções: Winston, Pino, Bunyan, Log4js e TSLog. Você conhecerá seus pontos fortes, recursos de configuração e obterá exemplos de código prontos.



1. Winston — o padrão universal

Winston é a biblioteca de registro mais popular para Node.js com suporte total a TypeScript. Ela fornece um poderoso sistema de transports (para onde enviar os logs) e formatação.



import winston from 'winston';

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

logger.info('Aplicação iniciada', { service: 'user-service' });logger.error('Erro de conexão com o banco de dados', { error: err.message });


Vantagens:

  • Sistema flexível de transports (arquivos, console, HTTP, MongoDB, Elasticsearch)
  • Suporte integrado à rotação de logs via winston-daily-rotate-file
  • Excelente integração com TypeScript — tipagem completa
  • Compatibilidade com profilers e sistemas APM


2. Pino — logger ultrarrápido

Pino é focado em desempenho — é 5 a 10 vezes mais rápido que o Winston. Escolha ideal para sistemas de alta carga e microsserviços.



import pino from 'pino';

const logger = pino({ level: process.env.LOG_LEVEL || 'info', transport: { target: 'pino-pretty', options: { colorize: true } }});

logger.info({ user: { id: 123 } }, 'Usuário autenticado');


Principais características:

  • Consumo mínimo de CPU e memória
  • Suporte nativo a streams do Node.js
  • Serialização eficiente de objetos
  • Suporte a child-loggers para registro contextual


3. Bunyan — registro estruturado da Joyent

Bunyan foi criado para trabalhar com arquitetura de microsserviços. Todos os logs são gerados em formato JSON, facilitando a análise e o parsing.



import bunyan from 'bunyan';

const logger = bunyan.createLogger({ name: 'myapp', level: 'info', serializers: { req: bunyan.stdSerializers.req, err: bunyan.stdSerializers.err }});

logger.info({ req: request }, 'Requisição recebida');


Características:

  • Serializadores integrados para requisições HTTP e erros
  • Suporte a ringbuffer para armazenar os últimos N registros
  • Utilitário bunyan CLI para saída formatada no console
  • Integração simples com a stack ELK


4. Log4js — abordagem familiar do Java

Log4js é uma adaptação do popular framework Java Log4j. Oferece configuração familiar através de níveis e appenders.



import log4js from 'log4js';

log4js.configure({ appenders: { out: { type: 'stdout' }, app: { type: 'file', filename: 'application.log' } }, categories: { default: { appenders: ['out', 'app'], level: 'debug' } }});

const logger = log4js.getLogger();logger.debug('Depuração de conexão');logger.error('Erro crítico');


Pontos fortes:

  • Sistema flexível de categorias e filtros
  • Suporte a múltiplos appenders (arquivos, bancos de dados, TCP)
  • Possibilidade de sobrescrever níveis para diferentes módulos
  • Suporte integrado a clusterização


5. TSLog — solução leve para TypeScript

TSLog é uma biblioteca minimalista, escrita especificamente para TypeScript. Ideal para projetos

Recommendations