O Ignition oferece uma interface visual elegante para exibição de erros em aplicações Laravel, enquanto o Flare atua como um serviço externo de rastreamento de exceções. Juntos, permitem monitorar falhas em tempo real no ambiente de produção, acelerando a identificação e resolução de problemas críticos.
Pré-requisitos
- Laravel 8.0 ou superior
- PHP 7.4+
- Composer intsalado
Instale o pacote principal via Composer:
composer require facade/ignition
Configuração do Flare
- Crie uma conta no painel do Flare e registre um novo projeto.
- Obtenha a chave de API exclusiva do projeto.
- Adicione-a ao arquivo
.env:
FLARE_KEY=insira_sua_chave_aqui
Habilitando a Integração
O arquivo de configuração do Ignition (config/ignition.php) deve conter:
'flare' => [
'enabled' => true,
'key' => env('FLARE_KEY'),
],
Defina os níveis de erro a serem reportados (recomenda-se evitar logs excessivos em produção):
'report_exceptions' => [
'level' => E_ERROR | E_WARNING | E_PARSE,
],
Tratmaento de Exceções em Produção
No arquivo app/Exceptions/Handler.php, registre o relatório automático de exceções:
use Facade\FlareClient\Flare;
public function register(): void
{
$this->reportable(function (Throwable $e) {
if (app()->bound(Flare::class)) {
app(Flare::class)->report($e);
}
});
}
Testando o Monitoramento
Adicione uma rota temporária para simular uma falha:
Route::get('/debug-trigger', fn() => throw new RuntimeException('Erro de teste para Flare'));
Ao acessar essa rota, o erro será exibido localmente pelo Ignition (se em modo de desenvolvimento) e enviado automaticamente ao Flare em produção.
Personalizações Avançadas
Filtragem de Dados Sensíveis
No arquivo config/flare.php, configure o que deve ser omitido:
'reporting' => [
'anonymize_ips' => true,
'report_query_bindings' => false,
'collect_git_information' => true,
],
Soluções Personalizadas para Exceções
Crie provedores de solução específicos. Exemplo para erro de autenticação no banco:
class InvalidDbCredentialsProvider extends SolutionProvider
{
public function canSolve(Throwable $throwable): bool
{
return $throwable instanceof PDOException
&& str_contains($throwable->getMessage(), 'Access denied');
}
public function getSolutions(Throwable $throwable): array
{
return [new UpdateDatabaseCredentialsSolution()];
}
}
Boas Práticas
- Ative alertas por Slack, email ou Microsoft Teams no painel do Flare.
- Use agrupamento de exceções semelhantes para reduzir ruído.
- Analise periodicamente os relatórios agregados para identificar padrões recorrentes.
- Mantenha o pacote
facade/ignitionatualizado regularmente.
Solução de Problemas Comuns
Problema: Erros não aparecem no Flare em produção.
Solução: Veriifque se APP_DEBUG=false e execute:
php artisan flare:test
Problema: Volume excessivo de eventos.
Solução: Limite a taxa de envio em config/flare.php:
'throttle' => [
'enabled' => true,
'max_events_in_minute' => 50,
],