Rédacteurs (Writers)
Un rédacteur est un objet qui hérite de Zend_Log_Writer_Abstract. La responsabilité d'un
rédacteur est d'enregistrer des données de log dans un stockage particulier.
Écrire vers un flux (stream)
Zend_Log_Writer_Stream envoie des données de log à un flux de PHP.
Pour écrire des données de log dans le buffer d'affichage de PHP, il faut utiliser l'URL
php://output. Alternativement, vous pouvez préférer envoyer des données de log directement à un
flux comme STDERR (php://stderr). info("Message d'information");
]]>
Pour écrire des données dans un fichier, employer un des Filesystem URLs: info("Message d'information");
]]> Par défaut, le flux s'ouvre en mode d'ajout
("a"). Pour l'ouvrir avec un mode différent, le constructeur de Zend_Log_Writer_Stream
accepte un deuxième paramètre facultatif pour le mode.
Le constructeur de Zend_Log_Writer_Stream accepte également une ressource existante de flux :
info("Message d'information");
]]> Vous ne pouvez pas indiquer le mode pour des ressources
existantes de flux. Le faire entraînera une Zend_Log_Exception.
Écrire dans des bases de données
Zend_Log_Writer_Db écrit les informations de log dans une table de base de données en
utilisant Zend_Db. Le constructeur de Zend_Log_Writer_Db reçoit une instance de
Zend_Db_Adapter, un nom de table, et un plan de correspondance entre les colonnes de la base de
données et les données élémentaires d'événement : '127.0.0.1',
'username' => 'malory',
'password' => '******',
'dbname' => 'camelot');
$db = Zend_Db::factory('PDO_MYSQL', $parametres);
$planDeCorrespondance = array('niveau' => 'priority', 'msg' => 'message');
$redacteur = new Zend_Log_Writer_Db($db,
'nom_de_la_table_de_log',
$planDeCorrespondance);
$logger = new Zend_Log($redacteur);
$logger->info("Message d'information");
]]> L'exemple ci-dessus écrit une ligne unique de données de log
dans la table appelée nom_de_la_table_de_log. La colonne de base de données appelée
niveau reçoit le niveau de priorité et la colonne appelée msg reçoit le message de
log.
Déraciner les rédacteurs
Le Zend_Log_Writer_Null est une souche qui écrit des données de log nulle part. Il est utile
pour neutraliser le log ou déraciner le log pendant les essais :info("Message d'information");
]]>
Tester avec un simulacre
Le Zend_Log_Writer_Mock est un rédacteur très simple qui enregistre les données brutes qu'il
reçoit dans un tableau exposé comme propriété publique. info("Message d'information");
var_dump($mock->events[0]);
// Array
// (
// [timestamp] => 2007-04-06T07:16:37-07:00
// [message] => Message d'information
// [priority] => 6
// [priorityName] => INFO
// )
]]>
Pour effacer les événements notés dans le simulacre, il faut simplement réaliser
$simulacre->events = array().
Additionner les rédacteurs
Il n'y a aucun objet composite de rédacteurs. Cependant, une instance d'enregistreur peut écrire vers tout
nombre de rédacteurs. Pour faire ceci, employer la méthode addWriter() : addWriter($redacteur1);
$logger->addWriter($redacteur2);
// va dans les 2 rédacteurs
$logger->info("Message d'information");
]]>