|
|
@@ -0,0 +1,84 @@
|
|
|
+# Logging
|
|
|
+
|
|
|
+Le logging s'effectue avec monolog: <https://symfony.com/doc/5.4/logging.html>
|
|
|
+
|
|
|
+Les logs sont traités par channels (ex : security, doctrine, http...)
|
|
|
+On peut consulter la liste des channels actifs avec la commande :
|
|
|
+
|
|
|
+ ./bin/console debug:container monolog.log
|
|
|
+
|
|
|
+Pour enregistrer un nouveau canal, on configure le service dans `config/services.yaml`:
|
|
|
+
|
|
|
+ App\Service\MyService:
|
|
|
+ tags:
|
|
|
+ - { name: monolog.logger, channel: my_channel }
|
|
|
+
|
|
|
+
|
|
|
+## Canaux et traitements
|
|
|
+
|
|
|
+### Principe général
|
|
|
+
|
|
|
+Certains handlers sont communs à différents canaux : stderr, console, critical
|
|
|
+On se contente alors d'exclure les canaux non pertinents avec la syntaxe suivante:
|
|
|
+
|
|
|
+ channels: ["!event", "!doctrine"]
|
|
|
+
|
|
|
+
|
|
|
+D'autres sont plus spécifiques, comme les différents `rotating_files`. On définit un ou plusieurs canaux
|
|
|
+concernés :
|
|
|
+
|
|
|
+ file_main:
|
|
|
+ type: rotating_file
|
|
|
+ [...]
|
|
|
+ channels: ["logger", "php", "doctrine", "http_client", "elastica"]
|
|
|
+ file_auth:
|
|
|
+ type: rotating_file
|
|
|
+ [...]
|
|
|
+ channels: security
|
|
|
+
|
|
|
+Enfin, d'autres sont vraiment dédiés à des process particuliers, comme des opérations d'export ou de
|
|
|
+synchronisation.
|
|
|
+
|
|
|
+
|
|
|
+#### stderr
|
|
|
+
|
|
|
+Tous les loggers (exceptés `event` et `event`) transmettent les messages de niveau ERROR ou plus vers la sortie
|
|
|
+d'erreur stderr de php. Le stream est ensuite géré par le serveur apache, nginx ou autre.
|
|
|
+
|
|
|
+#### console
|
|
|
+
|
|
|
+La console associe automatiquement les niveaux de log avec la verbosité attendue :
|
|
|
+
|
|
|
+| LoggerInterface | Verbosity | Command line |
|
|
|
+| --- | --- | --- |
|
|
|
+| ->error() | OutputInterface::VERBOSITY_QUIET | stderr |
|
|
|
+| ->warning() | OutputInterface::VERBOSITY_NORMAL | stdout |
|
|
|
+| ->notice() | OutputInterface::VERBOSITY_VERBOSE | -v |
|
|
|
+| ->info() | OutputInterface::VERBOSITY_VERY_VERBOSE | -vv |
|
|
|
+| ->debug() | OutputInterface::VERBOSITY_DEBUG | -vvv |
|
|
|
+
|
|
|
+
|
|
|
+> Voir: https://symfony.com/doc/current/logging/monolog_console.html
|
|
|
+
|
|
|
+#### rotating_files (main, et particuliers)
|
|
|
+
|
|
|
+Les canaux natifs ou custom sont par défaut gérés par un handler de type rotating_file qui logue les messages
|
|
|
+dans `var/log/{env}.main.log`
|
|
|
+
|
|
|
+Certains canaux sont gérés par un handler particulier et logués dans des fichiers spécifiques. Par ex,
|
|
|
+le canal `doctrine` est redirigé vers `var/log/{env}.doctrine.log`
|
|
|
+
|
|
|
+#### critical
|
|
|
+
|
|
|
+En cas d'erreur de niveau critical ou supérieur, un handler de type finger_crossed passe les logs à un handler
|
|
|
+de type `mailer` (par l'intermédiaire d'un handler `deduplicated` qui évitera les lignes en doublon).
|
|
|
+
|
|
|
+Le handler `mailer` envoie ensuite un mail à l'exploitation.
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|