Contactez-nous
Kitpages
17 rue de la Frise
38000 Grenoble
tel : 04 58 00 33 81
Monolog en production
Le logger pour la production
Le logger est un composant indispensable pour la bonne gestion d'une plate-forme web. Sous Symfony2, Monolog est dédié à cette tâche. C'est un logger Php puissant inspiré directement de Python. Voici une configuration correcte pour la production.
monolog: handlers: main: type: fingers_crossed action_level: error handler: grouped channels: !bomo_files grouped: type: group members: [streamed, swift] streamed: type: stream path: "%kernel.logs_dir%/%kernel.environment%.log" level: debug swift: type: swift_mailer from_email: FQN@foo.com to_email: webmaster@company.com subject: "OOps" level: debug login: type: stream path: "%kernel.logs_dir%/auth.log" level: info channels: security file: type: fingers_crossed action_level: warning handler: file_stream channels: bomo_files file_stream: type: stream path: "%kernel.logs_dir%/files.log" level: debug
Le cœur de l'application
Cette configuration permet de logger le cœur de l'application qu'en cas d'erreur. ( c.f : main / action_level )
Si une erreur est notifiée avec le niveau "error" alors le handler main réagit. Main utilise un type de logger qui s'appelle fingers_crossed. Ce type permet de garder l'ensemble des logs liées à la request et de choisir le niveau des logs à afficher.
Le type group sous le handler grouped permet juste de grouper différents traitements pour les logs. Ici, les logs sont :
- écrits sur le HDD grâce au type stream sous le handler streamed.
- Envoyés par mail grâce au type swift_mailer sous le handler swift
En résumé, si une erreur est notifiée au niveau error du logger, cela déclenche le handler main qui lui même déclanche les handlers streamed et swift. Ces derniers, loguerons au niveau debug.
main: type: fingers_crossed action_level: error handler: grouped channels: !bomo_files grouped: type: group members: [streamed, swift] streamed: type: stream path: "%kernel.logs_dir%/%kernel.environment%.log" level: debug swift: type: swift_mailer from_email: FQN@foo.com to_email: webmaster@company.com subject: "OOps" level: debug
Les authentifications
Avec la configuration vu au dessus, le cœur de l'application n'est loggée que si le niveau error est notifié. Hors nous souhaiterions logger les authentification réussites comme ratées qui elles notifient au niveau info. Pour cela, il suffit d'utiliser les channels. C'est un espace de nommage pour le logger.
Toutes les logs liés à la sécurité sont sous le channel security. Du coup nous l'utilisons pour mettre les authentifcations dans le fichier auth.log
login: type: stream path: "%kernel.logs_dir%/auth.log" level: info channels: security
Les bundles perso
Ici je souhaite logger l'info de la génération de fichier dans un fichier à part. Si le bundle en question utilise un channel spécifique pour ses logs c'est trivial.
file: type: fingers_crossed action_level: warning handler: file_stream channels: bomo_files file_stream: type: stream path: "%kernel.logs_dir%/files.log" level: debug
Commentaires
Note : on ne peut plus ajouter de commentaire sur ce site