Compare commits

..

3 Commits

Author SHA1 Message Date
gitea-actions 95befb776e chore: bump version to v0.4.49
Auto Tag Develop / tag (push) Successful in 9s
Build & Push Docker Image / build (push) Successful in 43s
2026-06-28 10:30:03 +00:00
matthieu 2df7a218bc Merge pull request 'feat(sentry) : remonte les logs ERROR+ backend vers GlitchTip' (#31) from feat/sentry-backend-error-logs into develop
Auto Tag Develop / tag (push) Successful in 8s
Reviewed-on: #31
2026-06-28 09:42:08 +00:00
matthieu 4e7f339dc1 feat(sentry) : remonte les logs ERROR+ backend vers GlitchTip
Pull Request — Quality gate / Frontend (build) (pull_request) Successful in 43s
Pull Request — Quality gate / Backend (PHP CS + PHPUnit) (pull_request) Has been cancelled
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) <noreply@anthropic.com>
2026-06-28 11:34:06 +02:00
3 changed files with 22 additions and 3 deletions
+7
View File
@@ -54,3 +54,10 @@ when@prod:
channels: [deprecation] channels: [deprecation]
path: "%kernel.logs_dir%/deprecations.log" path: "%kernel.logs_dir%/deprecations.log"
max_files: 7 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"]
+14 -2
View File
@@ -8,8 +8,10 @@ when@prod:
sentry: sentry:
dsn: '%env(SENTRY_DSN)%' dsn: '%env(SENTRY_DSN)%'
# Capture les exceptions levees par le kernel (comportement par defaut). # Capture des erreurs fatales PHP via le handler. On DESACTIVE le listener
register_error_listener: true # 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 register_error_handler: true
options: options:
environment: '%env(APP_ENV)%' environment: '%env(APP_ENV)%'
@@ -21,3 +23,13 @@ when@prod:
- Symfony\Component\HttpKernel\Exception\NotFoundHttpException - Symfony\Component\HttpKernel\Exception\NotFoundHttpException
- Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException - Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException
- Symfony\Component\Security\Core\Exception\AccessDeniedException - 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
+1 -1
View File
@@ -1,2 +1,2 @@
parameters: parameters:
app.version: '0.4.48' app.version: '0.4.49'