Allez on va essayer d'utiliser Zend_log convenablement.
L'idée c'est de découper les moments de décisions.
- J'écris mon code je décide de journaliser un message ou des infos
- Je gère mes journaux, je décide où va tel ou tel message.
- Je gère plusieurs staging, je change le comportement des mes dispatching
- Je change le format de stockage de mon journal, je décide comment disposer des informations reçues
- Je décide où je lis/récupère mes messages.
Julien débroussaille Zend_log dans sa Présentation du Zend Framework et une liste de tuto permet de compléter
J'écris mon code je décide de journaliser un message ou des infos
Pendant que je code ma réflexion doit se limiter à
- quel message envoyer
- quelles infos complémentaire envoyer
- quelle gravité/sévérité/catégoriser de message j'envoie.
<?php
$log->info('Hello log');
?>
ajoutons une info
<?php
$log->info('Hello log je suis à la ligne ' . __LINE__);
?>
Bon là on a envoyé le message
Je gère mes journaux, je décide où vont les messages.
Ca se passe plutôt dans le script. On prépare un objet ($log). qui sera utilisé par la suite dans le code mais on va commencer à lui dire que faire de ces messages qui remontent.
<?php
$log = new Zend_Log();
?>
Première chose (évidente) assigner les writers (les scribes).
<?php
$redacteur = new Zend_Log_Writer_Stream('/repository/des/ficher.log');
$log ->addWriter($redacteur);
?>
là c'est dans un un fichier mais "stream" permet aussi un accès plus large,
<?php
$redacteur = new Zend_Log_Writer_Stream('php://output');
?>
Et on a pas que "stream", ca peut-être aussi
- dans une base de donnée -> Zend_Log_Writer_Db,
- dans firebug -> Zend_Log_Writer_Firebug,
- dans un email -> Zend_Log_Writer_Mail,
- dans un mock -> Zend_Log_Writer_Mock
- dans syslog -> Zend_Log_Writer_Syslog
- dans le néant ... (si le temps du développement ou de tests intensifs, vous ne voulez pas polluer vos logs, redirigez les un temps dans null -> Zend_Log_Writer_Null
//php
<?php
$redacteur = new Zend_Log_Writer_Null;
?>
///
et si ca ne me plait pas je peux faire mon scribe en partant de Zend_Log_Writer_Abstract
je décide où va tel ou tel message.
Si c'est pour mettre la même chose partout ce n'est pas spécialement intéressant.
On va donc filtrer les messages à envoyer à chaque scribe. (rédacteur dans la doc)
Pour ca on a 4 outils
- Zend_Log_Filter_Interface
- Zend_Log_Filter_Message
- Zend_Log_Filter_Priority
- Zend_Log_Filter_Suppress
Je change le format de stockage de mon journal, je décide comment disposer des informations reçues
La façon dont on écrit chaque message est un format "par défaut" mais il peut être redéfini
- Zend_Log_Formatter_Firebug
- Zend_Log_Formatter_Interface
- Zend_Log_Formatter_Simple
- Zend_Log_Formatter_Xml
En utilisant cela vos pourrez