Aller au contenu principal

Logging

Statut

Document de cadrage architecture — v1.0 — relu le 2026-05-10.

Configuration actuelle

Le logging est géré par Monolog via la configuration Laravel standard (config/logging.php).

Canal par défaut

EnvironnementCanal recommandéNiveau
Développementstack / singledebug
Productiondailyerror

La configuration de production utilise LOG_CHANNEL=daily et LOG_LEVEL=error (défini dans .env).

Canaux disponibles

CanalDriverUsage
singleFichier uniqueDéveloppement
dailyFichier rotatif (14j)Production
stackAgrégation de canauxMulti-destination
stderrstderrConteneurs
syslogSyslog systèmeServeurs
slackWebhook SlackAlertes critiques
nullAucun outputTests

Rotation des logs

Le canal daily conserve les logs 14 jours par défaut (paramètre LOG_DAILY_DAYS).

Les fichiers sont stockés dans storage/logs/laravel.log.

Logs applicatifs existants

Le code produit des logs explicites dans certains points clés, par exemple :

Log::info('Token échangé', ['user_id' => $currentUser->userId, 'origin' => $origin]);

Les événements d'authentification (échange de token Supabase → Sanctum) sont tracés avec le contexte utilisateur.

Règles de logging

  • Ne jamais logger de secrets, tokens ou données personnelles brutes.
  • Toujours inclure un contexte structuré (user_id, origin, action).
  • Distinguer les niveaux : debug (dev), info (audit), warning (anomalie), error (erreur traitée), critical (alerte).
  • Ne pas logger les erreurs de validation (422) comme des erreurs — ce sont des cas normaux.
  • Logger les 500 avec le contexte suffisant pour diagnostiquer sans exposition de données sensibles.

Vision cible

AspectÉtat actuelCible
DestinationFichiers locauxFichiers + agrégateur centralisé
FormatTexte MonologJSON structuré
AlerteNon configuréeSlack / PagerDuty sur critical
Rétention14 joursPolitique définie par criticité
ObservabilitéLogs manuelsCorrélation avec traces et métriques

Points à clarifier

  • Service de centralisation des logs (Papertrail, Logtail, Datadog, Grafana Loki).
  • Format JSON structuré pour faciliter les requêtes.
  • Alertes automatiques sur les erreurs critiques.
  • Stratégie de rétention par niveau.
  • Corrélation logs / métriques / traces (observabilité complète).