@enclavex/logger
v1.0.2
Published
Pacote de facilitação para logs
Readme
@enclavex/logger
Uma biblioteca TypeScript facilitada para logs com suporte a rotação de arquivos, múltiplos níveis de log e configuração flexível.
📦 Instalação
npm install @enclavex/logger🚀 Quick Start
import { LoggerProvider } from '@enclavex/logger';
// Criar uma instância do logger com configurações padrão
const logger = new LoggerProvider();
// Usar os métodos de log
logger.info('Aplicação iniciada');
logger.error('Ocorreu um erro', { statusCode: 500 });📋 Configuração
Você pode personalizar o logger ao instanciá-lo com as seguintes opções:
interface LoggerOptions {
logDir?: string; // Diretório para os arquivos de log (padrão: './logs')
fileName?: string; // Nome do arquivo de log (padrão: 'app.log')
pretty?: boolean; // Saída formatada no console (padrão: false)
maxSize?: string; // Tamanho máximo do arquivo (padrão: '10M')
rotateInterval?: string; // Intervalo de rotação (padrão: '1d')
maxFiles?: number; // Número máximo de arquivos mantidos (padrão: 7)
}Exemplo de Configuração
const logger = new LoggerProvider({
logDir: './logs',
fileName: 'app.log',
pretty: true,
maxSize: '50M',
rotateInterval: '7d',
maxFiles: 10
});📝 Métodos de Log
O logger fornece os seguintes níveis de log, em ordem de severidade:
- trace(msg, obj?): Logs de rastreamento (menos severo)
- debug(msg, obj?): Informações de depuração
- info(msg, obj?): Informações gerais
- warn(msg, obj?): Avisos
- error(msg, obj?): Erros
- fatal(msg, obj?): Erros críticos (mais severo)
Exemplos de Uso
logger.trace('Rastreamento da execução');
logger.debug('Valor da variável:', { var: 'valor' });
logger.info('Requisição recebida');
logger.warn('Aviso de memória baixa');
logger.error('Falha na conexão', { errno: -61 });
logger.fatal('Sistema crítico falhou');🎚️ Gerenciamento de Níveis
Definir o nível de log
// Define o nível mínimo de log a ser registrado
logger.setLevel('debug'); // Retorna true se bem-sucedidoObter o nível atual
const currentLevel = logger.getLevel(); // Retorna: 'debug'Obter níveis ativos
const activeLevels = logger.getActiveLevels(); // Retorna array de níveis
// Se o nível for 'debug', retornará: ['debug', 'info', 'warn', 'error', 'fatal']Verificar se um nível está habilitado
if (logger.isLevelEnabled('debug')) {
logger.debug('Mensagem de depuração');
}🌍 Variáveis de Ambiente
O logger utiliza as seguintes variáveis de ambiente para configuração:
- LOG_LEVEL: Define o nível de log padrão (padrão: 'info')
- PREFIX_LOGGER: Prefixo do serviço nos logs
- APINAME: Nome da API nos logs
- AMBIENTE: Ambiente de execução (desenvolvimento, staging, produção, etc.)
Exemplo de arquivo .env
LOG_LEVEL=debug
PREFIX_LOGGER=my-service
APINAME=my-api
AMBIENTE=development📦 Recursos
- ✅ Rotação automática de logs: Os arquivos de log são automaticamente rotacionados com base no tamanho ou intervalo de tempo
- ✅ Compressão: Arquivos antigos são comprimidos automaticamente em gzip
- ✅ Múltiplos níveis: Suporte para 6 níveis diferentes de log
- ✅ Saída formatada: Opção de Pretty Print para melhor legibilidade no desenvolvimento
- ✅ Timestamps ISO: Todos os logs incluem timestamps no formato ISO 8601
- ✅ Contexto estruturado: Suporte para logging estruturado com objetos adicionais
📊 Formato dos Logs
Os logs são registrados em formato JSON estruturado com as seguintes propriedades:
{
"level": 30,
"time": "2025-11-28T10:30:00.000Z",
"pid": 1234,
"hostname": "localhost",
"service_type": "my-service",
"app_name": "my-api",
"environment": "development",
"version": "1.0.1",
"msg": "Mensagem de log"
}🏗️ Tecnologias
- Pino: Logger de alto desempenho para Node.js
- Rotating File Stream: Gerenciamento de rotação de arquivos
- TypeScript: Tipagem estática
📄 Licença
MIT
👤 Autor
Cordeiro
Para mais informações sobre Pino, visite: https://getpino.io/
