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

BorisMorel)
Commentaires
Note : on ne peut plus ajouter de commentaire sur ce site