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");
]]>