[ERROR] Incidente Detectado
🚨
[ERROR] Incidente Detectado
Falha de comunicação
Payload JSON despachado para a API:
🚨
**[ERROR] Incidente Detectado**
Título do Embed
Payload JSON:
📁
storage/logs/incident.log
LOCK_EX
Ativo
🗄️
Tabela:
Upsert
com Reincidência
error_tracker
Instrução SQL Executada:
Colunas & Valores Persistidos:
Coluna payload (JSON Sanitizado):
O DataSanitizer ofusca e-mails, CPFs e cartões, além de eliminar senhas e tokens de
autenticação em $_POST e $_SERVER antes do despacho.
⚠️ Payload Bruto Enviado ($_POST)
Exposto
{
"username": "carlos_dev",
"password": "minhaSenhaSuperSecreta123",
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"cpf": "123.456.789-10",
"credit_card": "4532 1122 3344 9876",
"email": "suporte.tech@empresa.com.br"
}
✅ Payload Sanitizado ($context->requestData)
Protegido
{
"username": "carlos_dev",
"password": "********",
"token": "********",
"cpf": "***.***.789-10",
"credit_card": "**** **** **** 9876",
"email": "sup*********@empresa.com.br"
}
Eventos capturados nesta sessão (armazenamento estritamente local em localStorage, zero-disk
no servidor).
| Timestamp | Severidade | Mensagem | Arquivo : Linha | Hash Único | Ações |
|---|---|---|---|---|---|
| Nenhum incidente registrado ainda nesta sessão. Dispare um erro na barra lateral! | |||||
Receitas de código PHP 8.2+ prontas para copiar e colar na sua aplicação:
bootstrap.php
<?php
declare(strict_types=1);
use HeliomarPM\ErrorTracker\ErrorTracker;
use HeliomarPM\ErrorTracker\Cache\FileCache;
use HeliomarPM\ErrorTracker\Handlers\FilelogHandler;
use HeliomarPM\ErrorTracker\Handlers\EmailHandler;
use HeliomarPM\ErrorTracker\Severity;
require_once __DIR__ . '/vendor/autoload.php';
// 1. Configura cache PSR-16 com TTL de 3600s para deduplicação anti-flood
$cache = new FileCache(__DIR__ . '/storage/cache/errors');
$tracker = new ErrorTracker($cache, 3600);
// 2. Registra os canais de alerta desejados
$tracker->addHandler(new FilelogHandler(__DIR__ . '/storage/logs'))
->addHandler(new EmailHandler('devops@empresa.com', notifySeverities: [Severity::CRITICAL]));
// 3. Rota de Fuga amigável em incidentes críticos (Failsafe)
$tracker->onCritical(function ($context) {
header("Location: /500.php?ref={$context->hash}");
exit;
});
// 4. Ativa interceptadores globais de Exceptions, Errors e Fatals
$tracker->register();
GitHubIssueHandler.php
use HeliomarPM\ErrorTracker\Handlers\GitHubIssueHandler;
use HeliomarPM\ErrorTracker\Severity;
// Abre issues no GitHub automaticamente com deduplicação inteligente de reincidência
$githubHandler = new GitHubIssueHandler(
token: $_ENV['GITHUB_TOKEN'], // Fine-grained PAT com permissão Issues: Read and write
repository: 'minha-empresa/meu-sistema',
application: 'Checkout API (Prod)',
notifySeverities: [Severity::CRITICAL, Severity::WARNING],
timeoutSeconds: 3,
deduplicateOpenIssues: true // Adiciona comentário na issue se já estiver aberta!
);
$tracker->addHandler($githubHandler);
WebhookHandler.php (Slack & Discord)
use HeliomarPM\ErrorTracker\Handlers\WebhookHandler;
use HeliomarPM\ErrorTracker\Severity;
// Envio para canal do Slack
$slackHandler = new WebhookHandler(
webhookUrl: $_ENV['SLACK_WEBHOOK_URL'],
notifySeverities: [Severity::CRITICAL, Severity::WARNING],
format: 'slack',
timeoutSeconds: 3
);
// Envio para canal do Discord
$discordHandler = new WebhookHandler(
webhookUrl: $_ENV['DISCORD_WEBHOOK_URL'],
format: 'discord',
timeoutSeconds: 3
);
$tracker->addHandler($slackHandler)
->addHandler($discordHandler);
DatabaseHandler.php (MySQL / MariaDB / SQLite)
use HeliomarPM\ErrorTracker\Handlers\DatabaseHandler;
use PDO;
// Conexão PDO existente da sua aplicação (MySQL ou SQLite)
$pdo = new PDO("mysql:host=localhost;dbname=meu_banco;charset=utf8mb4", "root", "senha");
// autoCreateTable: true cria a tabela 'error_tracker' com índices e campos automaticamente
$dbHandler = new DatabaseHandler(
pdo: $pdo,
tableName: 'error_tracker',
autoCreateTable: true,
notifySeverities: null // null registra todos os incidentes
);
$tracker->addHandler($dbHandler);
FilelogHandler.php & EmailHandler.php
use HeliomarPM\ErrorTracker\Handlers\FilelogHandler;
use HeliomarPM\ErrorTracker\Handlers\EmailHandler;
use HeliomarPM\ErrorTracker\Severity;
// Log rotacionado diariamente com proteção de escrita exclusiva LOCK_EX
$filelog = new FilelogHandler(
logDirectory: __DIR__ . '/storage/logs',
notifySeverities: [Severity::CRITICAL, Severity::WARNING]
);
// Disparo de e-mail formatado em HTML estilizado via mail()
$email = new EmailHandler(
to: 'suporte@empresa.com',
from: 'noreply@empresa.com',
notifySeverities: [Severity::CRITICAL],
format: 'html' // ou 'text'
);
$tracker->addHandler($filelog)->addHandler($email);
Uso como Logger PSR-3 (Logs do Dia a Dia)
// 1. Log informativo de negócio (Sem ruído de exceção ou stack trace fake)
$tracker->info("Tentativa de login com senha inválida", [
'username' => 'carlos.dev',
'ip' => '192.168.1.100',
'tentativa' => 3
]);
// 2. Alerta Operacional
$tracker->warning("Estoque do produto #458 abaixo do limite mínimo.");
// 3. Falha Crítica com Exceção Encadeada
try {
// rotina crítica...
} catch (Throwable $e) {
$tracker->error("Falha no checkout de pagamento", [
'pedido_id' => 1042,
'exception' => $e // Se passado, o stack trace real da exceção é preservado!
]);
}