Registro de Logs para TypeScript: Biblioteca Winston

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

O que é Winston e para que serve?

Winston é uma biblioteca poderosa e flexível para logging em aplicações TypeScript e JavaScript. Ela permite registrar logs em vários destinos (console, arquivos, bancos de dados) com diferentes níveis de importância. Ao contrário do simples console.log, o Winston oferece controle total sobre o formato dos logs, sua rotação e filtragem.

Para que usar Winston? Em projetos grandes, a saída padrão do console se torna inútil: os logs se misturam, se perdem e não podem ser analisados. O Winston resolve esses problemas: você pode configurar o registro de erros em um arquivo separado, mensagens informativas no console e dados de depuração em um banco de dados. Isso é fundamental para depuração, monitoramento e auditoria.

Instalação

Para instalar o Winston em um projeto TypeScript, execute o comando:

npm install winston

Também é recomendado instalar os tipos:

npm install --save-dev @types/winston

Se você usa yarn:

yarn add winston

Principais funcionalidades

  • Níveis de logging: error, warn, info, http, verbose, debug, silly. Cada nível tem uma prioridade, e você pode configurar quais níveis serão exibidos em diferentes transports.
  • Transports: formas de saída dos logs. Integrados: Console, File, Http, Stream. É possível criar os seus próprios.
  • Formatos: personalização da aparência dos logs (JSON, timestamp, saída colorida).
  • Rotação de arquivos: através do módulo adicional winston-daily-rotate-file, é possível criar automaticamente novos arquivos de log por dia ou tamanho.
  • Metadados: passagem de contexto adicional (por exemplo, ID da requisição, nome do usuário).

Exemplo de código em TypeScript

Vamos criar um logger simples com saída para console e arquivo:

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({ format: winston.format.combine( winston.format.colorize(), winston.format.simple() ) }), new winston.transports.File({ filename: 'error.log', level: 'error' }), new winston.transports.File({ filename: 'combined.log' }) ]});

// Usologger.info('Servidor iniciado na porta 3000');logger.error('Erro de conexão com o banco de dados', { database: 'main' });

Neste exemplo: mensagens informativas são exibidas no console (coloridas) e no arquivo combined.log, enquanto os erros são adicionalmente registrados em error.log. O formato dos logs é JSON com timestamp.

Quando usar Winston?

  • Em ambientes de produção para monitoramento de erros.
  • Em arquitetura de microsserviços para coletar logs em um armazenamento centralizado.
  • Quando for necessária auditoria das ações dos usuários.
  • Em projetos que exigem análise de logs com ELK (Elasticsearch, Logstash, Kibana) ou outros sistemas.

Winston é o padrão da indústria para logging em TypeScript. É simples de configurar, mas escalável para requisitos complexos.

Recommendations