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

O que é winston e para que serve?

Winston é uma biblioteca de logging poderosa e flexível para aplicações em TypeScript e JavaScript. Ela permite registrar mensagens estruturadas de diferentes níveis (info, warn, error, debug) no console, arquivos, bancos de dados ou serviços externos. Winston resolve o problema da falta de um mecanismo de logging embutido no Node.js, fornecendo uma API conveniente para configurar formatos, transports (para onde escrever os logs) e níveis de importância. A biblioteca é amplamente utilizada em projetos de produção, microsserviços e aplicações web.

Instalação

Para instalar o winston em um projeto TypeScript, execute:

npm install winstonnpm install --save-dev @types/winston

Ou via yarn:

yarn add winstonyarn add --dev @types/winston

Principais funcionalidades

  • Níveis de logging: error, warn, info, http, verbose, debug, silly (é possível configurar os seus próprios).
  • Transports: Console, File, HTTP, Stream, além de customizados (por exemplo, para Elasticsearch).
  • Formatos: JSON, texto simples, timestamp, rótulos, cores no console.
  • Múltiplos transports: escrever simultaneamente no console e em arquivo.
  • Logging de exceções: captura automática de uncaughtException.
  • Wrapper proxy para TypeScript: logger tipado com autocompletar.

Exemplo de código em TypeScript

import winston from 'winston';

const logger = winston.createLogger({ level: 'info', format: winston.format.combine( winston.format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss' }), 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('Nível baixo de memória');logger.error('Erro de conexão com o BD', { error: err });

Quando usar winston

Winston é ideal para:

  • Aplicações backend em Node.js/TypeScript (Express, NestJS, Fastify).
  • Arquitetura de microsserviços — coleta centralizada de logs via HTTP transport.
  • Monitoramento de produção — gravação de logs em arquivos com rotação (winston-daily-rotate-file).
  • Depuração e desenvolvimento — saída colorida no console com diferentes níveis.
  • Sistemas com requisitos de auditoria — logs estruturados em JSON para análise.

Não use winston em scripts simples onde console.log é suficiente — para projetos pequenos é excessivo. Evite também winston em aplicações client-side no navegador (nestes casos, é melhor usar console ou bibliotecas especializadas).

Conclusão

Winston é o padrão de facto para logging em projetos TypeScript. Ele oferece flexibilidade, desempenho e segurança de tipos com a configuração adequada. Comece com um logger simples e expanda-o à medida que a aplicação cresce.

```

Recommendations