api-stats-logger
Version:
SDK completo de logging e monitoramento de APIs com nova estrutura de logs organizada, auto-instrumentação, dashboard em tempo real e CLI para configuração automática. Suporta logs estruturados por contexto (HTTP, business, security, system) com campos op
289 lines (209 loc) • 6.91 kB
Markdown
# API Stats Logger
[](https://badge.fury.io/js/api-stats-logger)
[](https://opensource.org/licenses/MIT)
**SDK profissional para logging e monitoramento de APIs em Node.js com instrumentação automática.**
## 🚀 Instalação
```bash
npm install api-stats-logger
```
## ⚡ Início Rápido
### 🔐 Login Persistente (Novo!)
O SDK agora mantém você logado automaticamente entre sessões:
```bash
npx api-stats-logger
# Primeira vez: faça login (Google OAuth ou email/senha)
# Próximas vezes: login automático! 🎉
```
**Funcionalidades do Login Persistente:**
- ✅ **Armazenamento seguro** no keychain do sistema
- ✅ **Modo offline** com cache inteligente
- ✅ **Sincronização automática** quando voltar online
- ✅ **Validação contínua** de credenciais
- ✅ **Migração automática** de configurações antigas
### Configuração Automática (Recomendado)
```bash
npx api-stats-init
```
Este comando irá:
- ✅ Configurar automaticamente o projeto
- ✅ Gerar API key
- ✅ Criar arquivos de configuração
- ✅ Detectar seu framework automaticamente
- ✅ **Salvar credenciais** para próximas execuções
### Configuração Manual
```javascript
const ApiStatsLogger = require('api-stats-logger');
const logger = new ApiStatsLogger({
apiKey: process.env.API_STATS_API_KEY,
service: 'minha-api',
environment: 'production'
});
// Logging manual
logger.info('Usuário logado', { userId: 123 });
logger.error('Erro no banco', { error: 'timeout' });
```
## 🔧 Frameworks Suportados
### Express.js
```javascript
const express = require('express');
const ApiStatsLogger = require('api-stats-logger');
const app = express();
const logger = new ApiStatsLogger();
// Middleware automático
app.use(ApiStatsLogger.expressMiddleware({ logger }));
app.listen(3000);
```
### NestJS
```javascript
// Adicione no main.ts
import { ApiStatsLogger } from 'api-stats-logger';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
const logger = new ApiStatsLogger();
app.use(ApiStatsLogger.nestMiddleware({ logger }));
await app.listen(3000);
}
```
### Fastify & Koa
```javascript
// Fastify
fastify.register(ApiStatsLogger.fastifyPlugin());
// Koa
app.use(ApiStatsLogger.koaMiddleware());
```
## 📊 Recursos
- 🚀 **Auto-instrumentação** - Captura automática de requests/responses
- 📈 **Métricas de Performance** - Response time, throughput, error rate
- 🔍 **Rastreamento Distribuído** - Trace IDs para debugging
- 🛡️ **Segurança** - Headers sensíveis automaticamente filtrados
- 📦 **Zero Configuração** - Funciona out-of-the-box
- 🔄 **Retry Logic** - Resiliente a falhas de rede
- 📱 **Dashboard** - Interface web para visualização
## ⚙️ Configuração Avançada
```javascript
const logger = new ApiStatsLogger({
apiKey: process.env.API_STATS_API_KEY,
service: 'minha-api',
environment: 'production',
// Performance
batchSize: 50,
flushInterval: 5000,
maxRetries: 3,
// Recursos
captureErrors: true,
capturePerformance: true,
// Segurança
captureBody: false,
captureHeaders: false
});
```
## 🔒 Segurança
O SDK automaticamente filtra headers sensíveis:
- `authorization`
- `cookie`
- `x-api-key`
- `x-auth-token`
## 📚 Exemplos
### Logging de Operações
```javascript
async function processPayment(paymentData) {
const operationId = `payment_${Date.now()}`;
logger.info('Payment started', { operationId, amount: paymentData.amount });
try {
const result = await paymentGateway.process(paymentData);
logger.info('Payment completed', { operationId, paymentId: result.id });
return result;
} catch (error) {
logger.error('Payment failed', { operationId, error: error.message });
throw error;
}
}
```
### Middlewares Customizados
```javascript
// Express middleware customizado
app.use(ApiStatsLogger.expressMiddleware({
logger,
captureBody: false,
captureHeaders: false,
skipPaths: ['/health', '/metrics']
}));
```
## 🔧 Variáveis de Ambiente
```bash
# Obrigatório
API_STATS_API_KEY=sua-api-key-aqui
# Opcionais
API_STATS_SERVICE=minha-api
API_STATS_ENVIRONMENT=production
API_STATS_URL=https://api.exemplo.com/logs
API_STATS_ENABLED=true
API_STATS_BATCH_SIZE=20
API_STATS_FLUSH_INTERVAL=5000
```
## 📈 Métricas Coletadas
- **HTTP Requests**: Response time, status codes, throughput
- **Erros**: Stack traces, frequência, categorização
- **Performance**: Uso de recursos, uptime
- **Operações de Negócio**: Transações, conversões
## 🔐 Sistema de Login Persistente
### Funcionalidades Avançadas
O SDK v2.3.7+ inclui um sistema robusto de login persistente:
```bash
# Primeira execução - fazer login
npx api-stats-logger
# Escolha: Google OAuth, Email/Senha ou API Key
# Próximas execuções - login automático!
npx api-stats-logger
# ✅ Logado automaticamente
```
### Armazenamento Seguro
- **🔐 Keychain do Sistema**: Windows Credential Manager, macOS Keychain, Linux Keyring
- **📁 Arquivo Local Seguro**: Fallback com permissões restritas (0600)
- **🧹 Limpeza Automática**: Credenciais inválidas são removidas automaticamente
### Modo Offline
```bash
# Trabalhe offline com dados em cache
npx api-stats-logger
# 📦 Usando dados em cache (modo offline)
```
**Funcionalidades Offline:**
- ✅ Visualizar projetos em cache
- ✅ Configurar projetos existentes
- ✅ Gerar arquivos de configuração
- ❌ Criar novos projetos (requer conexão)
### Comandos Úteis
```bash
# Demonstrar funcionalidades de login persistente
npm run demo:login
# Teste completo do sistema
npm run demo:full
# Ver estatísticas de cache
npm run demo:stats
# Limpar cache e credenciais
npm run clear:cache
```
### Gerenciamento de Credenciais
```javascript
const SecureStorage = require('api-stats-logger/secure-storage');
const storage = new SecureStorage();
// Verificar se está logado
const credentials = await storage.getCredentials();
console.log('Logado:', !!credentials);
// Limpar credenciais
await storage.clearCredentials();
```
### Segurança
- **🔒 Criptografia**: Dados sensíveis protegidos pelo keychain do SO
- **⏰ Expiração**: Tokens validados automaticamente
- **🚫 Isolamento**: Cada usuário tem seus próprios dados
- **🔄 Migração**: Credenciais antigas migradas automaticamente
📖 **Documentação completa**: [PERSISTENT_LOGIN.md](./PERSISTENT_LOGIN.md)
## 🆘 Suporte
- **Documentação**: [GitHub](https://github.com/api-stats-logger)
- **Issues**: [GitHub Issues](https://github.com/api-stats-logger/issues)
- **Email**: support@api-stats.com
## 📜 Licença
MIT License - veja [LICENSE](LICENSE) para detalhes.
---
**Desenvolvido com ❤️ para desenvolvedores Node.js**