Flare
Error Tracking und Performance Tracing ueber Flare (Spatie). Primaere Fehlerueberwachung mit Fokus auf Laravel-native Integration, ergaenzt durch Laravel Nightwatch.
Integration
Flare wird ueber spatie/laravel-flare eingebunden und registriert sich als Exception Handler:
// bootstrap/app.php
use Spatie\LaravelFlare\Facades\Flare;
->withExceptions(function (Exceptions $exceptions): void {
Flare::handles($exceptions);
})
Location: bootstrap/app.php
Architektur
graph LR
A["Exception"] --> B["Laravel Exception Handler"]
B --> D["Flare"]
B --> N["Nightwatch"]
D --> E["Error Reports"]
D --> F["Performance Traces"]
F --> G["Sampling (10%)"]
Features
| Feature | Beschreibung |
|---|---|
| Error Tracking | Automatische Erfassung aller unbehandelten PHP-Exceptions |
| Performance Tracing | Request-Traces mit konfigurierbarer Sampling-Rate |
| Log Events | Log-Statements werden als Events an Flare gesendet |
| Share Button | Laravel Error Page mit Share-Funktion fuer Fehler-Details |
| Data Censoring | Automatische Zensierung von Passwoertern, API-Keys, Tokens |
Konfiguration
Location: config/flare.php
Collects
Flare sammelt automatisch Kontext-Informationen (Logs, Queries, Request-Daten). Ueber ignore und extra koennen Collectors deaktiviert oder hinzugefuegt werden:
'collects' => FlareConfig::defaultCollects(
ignore: [],
extra: []
),
Data Censoring
Sensible Daten werden automatisch aus Reports entfernt:
| Bereich | Zensierte Felder |
|---|---|
| Body Fields | password, password_confirmation |
| Headers | API-KEY, Authorization, Cookie, Set-Cookie, X-CSRF-TOKEN, X-XSRF-TOKEN |
| Client IPs | Nicht zensiert (konfigurierbar) |
| Cookies | Nicht zensiert (konfigurierbar) |
| Session | Nicht zensiert (konfigurierbar) |
Performance Tracing
Traces erfassen den Ablauf von Requests inkl. DB-Queries, Queue-Jobs und HTTP-Calls. Die Sampling-Rate bestimmt, welcher Anteil der Requests getrackt wird:
'trace' => env('FLARE_TRACE', true),
'sampler' => [
'class' => \Spatie\FlareClient\Sampling\RateSampler::class,
'config' => [
'rate' => env('FLARE_SAMPLER_RATE', 0.1), // 10% der Requests
],
],
Error Grouping
Flare gruppiert Fehler automatisch. Fuer spezifische Exceptions kann das Grouping ueberschrieben werden:
'overridden_groupings' => [
// ConnectionException::class => OverriddenGrouping::ExceptionMessageAndClass,
],
Log Events
Log-Statements (Log::info(), Log::error() etc.) werden als Events an Flare gesendet:
'send_logs_as_events' => true,
Application Version
Flare zeigt die deployed App-Version (Git Commit Hash) im Dashboard an. Die Version wird in AppServiceProvider::boot() ueber Flare::withApplicationVersion() gesetzt:
- Explizit:
APP_VERSIONenv-Variable (wird beim Deployment gesetzt, z.B. Git Commit Hash) - Auto-Detect: Falls
APP_VERSIONnicht gesetzt, wird der Git Commit Hash automatisch aus.git/gelesen
Damit sind Fehler in Flare dem exakten Deploy-Commit zuordenbar.
Location: app/Providers/AppServiceProvider.php
.env Variablen
| Variable | Default | Beschreibung |
|---|---|---|
FLARE_KEY | -- | Flare API Key (erforderlich fuer Error Reporting) |
FLARE_TRACE | true | Performance Tracing aktivieren/deaktivieren |
FLARE_SAMPLER_RATE | 0.1 | Sampling-Rate fuer Traces (0.0 = keine, 1.0 = alle) |
APP_VERSION | -- | Deployed Commit Hash (fuer Flare Version-Tagging) |
Admin Sidebar Link
Im Admin-Bereich gibt es einen direkten Link zu Flare Errors:
https://flareapp.io/103600-postbox/errors
Relevante Dateien
| Bereich | Pfad |
|---|---|
| Flare Config | config/flare.php |
| Exception Handler | bootstrap/app.php |
| Package | spatie/laravel-flare (composer.json) |