From 4e7f339dc19e17d9a9e32078871ff9bed97af97c Mon Sep 17 00:00:00 2001 From: matthieu Date: Sun, 28 Jun 2026 11:34:06 +0200 Subject: [PATCH] feat(sentry) : remonte les logs ERROR+ backend vers GlitchTip Ajout d'un handler Monolog (Sentry\Monolog\Handler) qui envoie les logs de niveau ERROR et plus a GlitchTip en tant qu'Issues, en prod uniquement. - monolog.yaml : handler 'sentry' hors fingers_crossed (envoi immediat), canaux event/doctrine/deprecation exclus pour limiter le bruit. - sentry.yaml : enregistrement du service handler au niveau Error + register_error_listener passe a false pour eviter le doublon d'exceptions (les exceptions kernel sont deja logguees par Symfony => remontees via Monolog). register_error_handler reste actif (erreurs fatales PHP). Co-Authored-By: Claude Opus 4.8 (1M context) --- config/packages/monolog.yaml | 7 +++++++ config/packages/sentry.yaml | 16 ++++++++++++++-- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/config/packages/monolog.yaml b/config/packages/monolog.yaml index 9a00158..7297fee 100644 --- a/config/packages/monolog.yaml +++ b/config/packages/monolog.yaml @@ -54,3 +54,10 @@ when@prod: channels: [deprecation] path: "%kernel.logs_dir%/deprecations.log" max_files: 7 + # Remonte les logs ERROR+ vers GlitchTip en tant qu'Issues (service defini + # dans sentry.yaml). Hors fingers_crossed : envoi immediat, independamment + # du buffer fichier. On exclut le bruit (event, doctrine, deprecation). + sentry: + type: service + id: Sentry\Monolog\Handler + channels: ["!event", "!doctrine", "!deprecation"] diff --git a/config/packages/sentry.yaml b/config/packages/sentry.yaml index cbc4938..51016ae 100644 --- a/config/packages/sentry.yaml +++ b/config/packages/sentry.yaml @@ -8,8 +8,10 @@ when@prod: sentry: dsn: '%env(SENTRY_DSN)%' - # Capture les exceptions levees par le kernel (comportement par defaut). - register_error_listener: true + # Capture des erreurs fatales PHP via le handler. On DESACTIVE le listener + # kernel pour eviter les doublons avec le handler Monolog (ci-dessous) : les + # exceptions du kernel sont deja logguees par Symfony => remontees via Monolog. + register_error_listener: false register_error_handler: true options: environment: '%env(APP_ENV)%' @@ -21,3 +23,13 @@ when@prod: - Symfony\Component\HttpKernel\Exception\NotFoundHttpException - Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException - Symfony\Component\Security\Core\Exception\AccessDeniedException + + # Handler Monolog -> Sentry : remonte les logs niveau ERROR+ comme Issues GlitchTip + # (en plus des erreurs fatales). Les $logger->error(...) metier deviennent des Issues. + # Le filtre ignore_exceptions ci-dessus s'applique aussi a ces evenements. + services: + Sentry\Monolog\Handler: + arguments: + $hub: '@Sentry\State\HubInterface' + $level: !php/const Monolog\Level::Error + $bubble: true