Skip to content

✨ feat(logs): rotation des logs applicatifs, messenger.log (~50 Mo) borné (#606) - #608

Merged
ronan-develop merged 3 commits into
mainfrom
chore/606-log-rotation
Oct 2, 2026
Merged

ronan-develop merged 3 commits into
mainfrom
chore/606-log-rotation

Conversation

@ronan-develop

Copy link
Copy Markdown
Owner

Closes #606

Pourquoi

var/log/messenger.log atteignait ~50 Mo sur chacune des 7 instances, sans aucune purge. Audit du 2026-10-02 : 1,24 million de lignes dont aucune utile — uniquement la bannière que messenger:consume réimprime à chaque démarrage du worker (cron toutes les minutes, >> messenger.log), ~103 000 démarrages. Le fichier reçoit aussi les erreurs du worker : on le fait donc tourner plutôt que de le réduire au silence.

Changements

  • bin/rotate-logs.sh (nouveau) : chaque *.log de plus de 10 Mo (ROTATE_LOGS_MAX_BYTES) est archivé dans <fichier>.1.gz, 3 archives conservées (ROTATE_LOGS_KEEP), puis tronqué et non renommé : le worker garde son descripteur ouvert (>> = O_APPEND) et continue d'écrire au bon endroit sans redémarrage. Si l'archivage échoue, le log n'est pas tronqué ; le script sort toujours en 0.
  • bin/deploy-nightly.sh : appelle la rotation au tout début, avant toute décision de déploiement (instance à jour, reportée ou déployée). Il est déjà planifié et étalé sur les 7 instances : aucun nouveau cron à poser, aucune intervention manuelle par serveur. Un échec de rotation n'empêche jamais le déploiement.
  • Docs : .claude/deploiement.md, .github/avancement.md.

Mesures (fichier de 50 Mo de bannières)

Archive de 245 Ko, 0,2 s, 3 Mo de mémoire : sans risque pour le LVE.

Points d'attention

  • Quelques lignes écrites entre la copie et la troncature peuvent être perdues : acceptable pour des logs.
  • Effectif sur une instance à la nuit suivant celle où elle récupère le nouveau script (le script du cron est celui du disque). Purge immédiate possible avec bash bin/rotate-logs.sh dans le dossier de l'instance.
  • Hors périmètre : réduire le bruit à la source (bannière du worker), niveau de log Monolog (CI : silencer les logs d'exceptions HTTP attendues dans la sortie PHPUnit #500).

Tests

bash tests/bash/run.sh : 37/37 — 7 nouveaux pour la rotation (sous le seuil, archive + vidage, décalage et limite à 3, seuls les *.log, écriture O_APPEND après troncature sans trou, échec de gzip sans perte ni échec, dossier absent/vide) et 2 d'intégration nocturne (rotation même si l'instance est à jour ; échec de rotation sans effet sur le déploiement). Ces tests tournent désormais en CI (job bash, #605).

@ronan-develop ronan-develop added the chore Outillage, config, nettoyage label Oct 2, 2026
@ronan-develop ronan-develop self-assigned this Oct 2, 2026
@github-actions github-actions Bot added this to the Pre Prod milestone Oct 2, 2026
@ronan-develop
ronan-develop merged commit 475cb29 into main Oct 2, 2026
5 checks passed
@ronan-develop
ronan-develop deleted the chore/606-log-rotation branch October 2, 2026 10:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

chore Outillage, config, nettoyage

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Rotation des logs : messenger.log atteint ~50 Mo sur chaque instance sans purge

1 participant