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
```html

O que é winston e para que serve?

Winston é a biblioteca de logging mais popular no ambiente Node.js. Ela fornece uma API simples e universal que permite registrar logs com diferentes níveis de importância, formatá-los e enviá-los para diferentes destinos (console, arquivos, bancos de dados, serviços externos). Ao contrário do simples console.log, o winston oferece controle total sobre o logging: você pode configurar a rotação de logs por tamanho ou data, filtrar mensagens por nível (info, warn, error, debug), adicionar metadados (hora, ID da requisição) e até usar vários transports simultaneamente. É uma ferramenta indispensável para monitoramento, depuração e auditoria em aplicações em produção.

Instalação

Instale o winston via npm ou yarn:

npm install winston# ouyarn add winston

Funcionalidades principais

  1. Níveis de logging: error, warn, info, http, verbose, debug, silly.
  2. Transports: Console, File, HTTP, Stream e personalizados.
  3. Formatos: JSON, texto simples, carimbo de data/hora, saída colorida.
  4. Combinação de múltiplos transports: por exemplo, erros em arquivo e info no console.
  5. Transports e formatos personalizados: é possível integrar com Logstash, Sentry, Papertrail e outros.
  6. Rotação de logs: através do módulo adicional winston-daily-rotate-file.
  7. Exceções e rejeições não tratadas: captura automática de erros não tratados.

Exemplo de código em JavaScript (Node.js)

const winston = require('winston');

// Criando o loggerconst 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.warn('Memória insuficiente', { memoryUsage: process.memoryUsage() });try { throw new Error('Algo quebrou');} catch (err) { logger.error('Erro ao processar requisição', { error: err.message, stack: err.stack });}

Quando usar

Winston é ideal para qualquer projeto Node.js que exija logging estruturado: servidores web (Express, Koa), microsserviços, utilitários CLI, bots, processos ETL. Ele é especialmente útil em ambientes de produção, onde é necessário centralizar logs, analisar erros e encontrar problemas rapidamente. Se o seu projeto usa TypeScript, o winston tem suporte completo a tipos.

Alternativas: pino (mais rápido, mais leve), log4js (configuração via XML/JSON), bunyan (logs em JSON). Mas o winston continua sendo a solução mais flexível e difundida.

```

Recommendations