alexandresafarpaim / penta-logger
Real-time log streaming dashboard for Laravel. Monitor requests, errors, external APIs, jobs, and scheduled tasks with zero configuration.
Installs: 1
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/alexandresafarpaim/penta-logger
Requires
- php: ^8.1
- illuminate/support: ^10.0|^11.0|^12.0
Requires (Dev)
- orchestra/testbench: ^8.0|^9.0|^10.0
- phpunit/phpunit: ^10.0|^11.0
README
Dashboard de streaming de logs em tempo real para aplicações Laravel. Monitore requisições, erros, APIs externas, jobs e tarefas agendadas - tudo em um só lugar, sem configuração.
Funcionalidades
- Logs de Requisições: Método HTTP, endpoint, headers, corpo da requisição/resposta, status, duração
- Logs de Erros: Detalhes de exceções com stack trace otimizado (apenas seu código)
- Logs de APIs Externas: Rastreie todas as chamadas HTTP client com dados completos
- Logs de Jobs: Monitore jobs da fila - status, duração, tentativas, payload e exceções
- Logs de Schedules: Acompanhe tarefas agendadas - comando, expressão cron, duração, output
- Dashboard em Tempo Real: Server-Sent Events (SSE) para atualizações instantâneas
- Filtros Avançados: Filtre por método, status, endpoint, IP e intervalo de datas
- Zero Configuração: Funciona imediatamente, sem banco de dados ou setup
- Seguro: Desabilitado em produção por padrão, mascaramento automático de dados sensíveis
Requisitos
- PHP 8.1+
- Laravel 10, 11 ou 12
Instalação
composer require alexandresafarpaim/penta-logger --dev
Pronto! Acesse http://sua-app.test/_penta-logger para ver o dashboard.
O Que é Registrado
Requisições
Todas as requisições HTTP para sua aplicação com:
- Endereço IP, método HTTP, URL e path
- Headers e corpo da requisição
- Headers e corpo da resposta
- Código de status e duração
Erros
Todas as exceções com:
- Classe e mensagem da exceção
- Arquivo e número da linha
- Stack trace filtrado (apenas seu código, não vendor)
- Contexto da requisição
APIs Externas
Todas as chamadas HTTP client (Http::get(), etc.) com:
- URL e método
- Headers e corpo da requisição
- Status, headers e corpo da resposta
- Duração
Jobs
Todos os jobs da fila com:
- Nome da classe e ID do job
- Nome da fila e conexão
- Número da tentativa e máximo de tentativas
- Payload/dados do job
- Duração e status (completed/failed)
- Detalhes da exceção se falhou
Tarefas Agendadas
Todos os comandos agendados com:
- Comando ou closure
- Expressão cron
- Duração e status
- Output (se disponível)
- Detalhes da exceção se falhou
Configuração (Opcional)
Publique o arquivo de configuração para personalizar:
php artisan vendor:publish --tag=penta-logger-config
Variáveis de Ambiente
PENTA_LOGGER_ENABLED=true PENTA_LOGGER_USER=admin PENTA_LOGGER_PASSWORD=secret PENTA_LOGGER_ROUTE_PREFIX=_penta-logger PENTA_LOGGER_MAX_LOGS=500 PENTA_LOGGER_ALLOW_PRODUCTION=false
Opções de Configuração
// config/penta-logger.php return [ // Habilitar/desabilitar o pacote 'enabled' => env('PENTA_LOGGER_ENABLED', true), // Autenticação do dashboard 'auth' => [ 'user' => env('PENTA_LOGGER_USER'), 'password' => env('PENTA_LOGGER_PASSWORD'), ], // Prefixo da URL do dashboard 'route_prefix' => '_penta-logger', // Middleware das rotas 'middleware' => ['web'], // Máximo de logs a manter 'max_logs' => 500, // Habilitar em produção (requer autenticação) 'allow_production' => false, // Paths a ignorar (suporta wildcards) 'ignore_paths' => [ '_penta-logger/*', 'telescope/*', 'horizon/*', ], // Headers a mascarar 'mask_headers' => [ 'Authorization', 'Cookie', 'X-API-Key', ], // Campos a mascarar (correspondência parcial) 'mask_fields' => [ 'password', 'credit_card', 'cvv', 'token', 'secret', ], ];
Uso em Produção
Por padrão, o Penta Logger está desabilitado em produção. Para habilitá-lo com segurança:
- Configure as credenciais de autenticação:
PENTA_LOGGER_USER=admin PENTA_LOGGER_PASSWORD=sua-senha-segura
- Habilite o modo de produção:
PENTA_LOGGER_ALLOW_PRODUCTION=true
Segurança
- Desabilitado em produção por padrão
- Autenticação básica opcional para o dashboard
- Headers sensíveis (Authorization, Cookie, etc.) são mascarados
- Campos sensíveis (password, credit_card, token, etc.) são mascarados
- Stack traces mostram apenas arquivos da sua aplicação (não vendor)
- Corpos de resposta grandes são truncados
Arquitetura
┌─────────────────────────────────────────────────────────────┐
│ Sua Aplicação Laravel │
├─────────────────────────────────────────────────────────────┤
│ Middleware │ Exception Handler │ Event Listeners│
│ (Requisições) │ (Erros) │ (APIs/Jobs) │
└──────────┬───────────┴─────────┬───────────┴────────┬────────┘
│ │ │
└─────────────────────┼────────────────────┘
▼
┌────────────────────────┐
│ LogCollector │
│ (Arquivo JSON Lines) │
└───────────┬────────────┘
│
┌───────────┴────────────┐
│ │
┌─────▼─────┐ ┌───────▼───────┐
│ Dashboard │◄────SSE──│ StreamController│
│ (HTML) │ │ (Tempo Real) │
└───────────┘ └────────────────┘
Licença
MIT