bug-collector / laravel-client
Client Laravel pour Bug Collector : reporte les erreurs et les anomalies de performance (requêtes, jobs, queries, commandes lentes) à un service Bug Collector centralisé.
Package info
github.com/hugo-bachmann/laravel-bug-collector-client
pkg:composer/bug-collector/laravel-client
Requires
- php: ^8.2
- illuminate/http: ^12.0|^13.0
- illuminate/support: ^12.0|^13.0
Requires (Dev)
- larastan/larastan: ^3.0
- laravel/pint: ^1.0
- mockery/mockery: ^1.6
- orchestra/testbench: ^10.0|^11.0
- phpunit/phpunit: ^11.0|^12.0
README
Client Laravel pour Bug Collector : reporte automatiquement les erreurs et les anomalies de performance (requêtes HTTP, jobs, queries SQL, commandes artisan trop lentes) à un service Bug Collector centralisé.
Compatibilité
| Package | PHP | Laravel |
|---|---|---|
| 1.x | 8.2 – 8.4 | 12 · 13 |
L'instrumentation et le transport sont implémentés. L'authentification se fait via le header X-Ingest-Key ; l'envoi est fail-safe (une panne du collecteur ne casse jamais l'app hôte) ; les seuils de performance sont configurables.
Installation
composer require bug-collector/laravel-client
Puis dans le .env de l'app cliente :
BUG_COLLECTOR_URL="https://<host-bug-collector>" BUG_COLLECTOR_INGEST_KEY="<clé générée dans le panneau Bug Collector>"
BUG_COLLECTOR_URL est la racine du service Bug Collector. Le client ajoute automatiquement /api/laravel-bugs/add pour les erreurs et /api/laravel-perf/add pour la performance.
Le ServiceProvider est auto-découvert — rien à enregistrer à la main.
Configuration
php artisan vendor:publish --tag=bug-collector-config
Voir config/bug-collector.php pour les seuils de performance (en millisecondes) :
| Type | Défaut |
|---|---|
request |
2000 ms |
job |
30000 ms |
query |
1000 ms |
command |
60000 ms |
Cookies
La capture des cookies est désactivée par défaut (opt-in via BUG_COLLECTOR_SEND_COOKIES=true). Quand elle est activée, sont automatiquement remplacés par [REDACTED] :
- la session Laravel et
XSRF-TOKEN; - tout cookie commençant par
remember_; - tout cookie dont le nom contient
token,auth,session,csrf,secretoupassword(insensible à la casse).
Pour masquer des noms supplémentaires (cookies d'auth/JWT custom), listez-les en CSV via BUG_COLLECTOR_REDACT_COOKIES="tenant_id,locale_pref".
Sécurité & confidentialité
- HTTPS requis.
BUG_COLLECTOR_URLdoit être enhttps://(sauflocalhost/127.0.0.1en dev). Sinon le client se désactive automatiquement pour ne jamais transmettre la clé d'ingestion ni les données en clair. - Paramètres d'URL sensibles masqués. Les valeurs des paramètres de query courants (
token,signature,password,secret,api_key,code,otp…) sont remplacées par[REDACTED]avant l'envoi. - Args de stack trace exclus : seuls fichier / ligne / fonction / classe sont remontés.
- Attention aux messages d'exception et au SQL brut. Le message d'exception (
getMessage()) et le label des requêtes lentes sont envoyés verbatim. Les requêtes Eloquent gardent leurs placeholders (?), mais le SQL brut (whereRaw,DB::raw) et les messages d'exception peuvent contenir des littéraux sensibles — évitez d'y placer des secrets. - Latence. L'envoi est synchrone au
terminate(après la réponse / la commande), borné parBUG_COLLECTOR_TIMEOUT(2 s par défaut) ; toute erreur réseau est avalée.
Développement
composer install composer test # phpunit composer lint # pint --test (vérifie le style) composer format # pint (corrige le style) composer analyse # phpstan (analyse statique, niveau 6)
L'intégration continue exécute la suite de tests sur la matrice PHP 8.2/8.3/8.4 × Laravel 12/13, ainsi que Pint et PHPStan.
Licence
Ce package est distribué sous licence MIT.