Programmer's Reference Guide
| Présentation |
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).
$redacteur = new Zend_Log_Writer_Stream('php://output');
$logger = new Zend_Log($redacteur);
$logger->info("Message d'information");
Pour écrire des données dans un fichier, employer un des » Filesystem URLs:
$redacteur = new Zend_Log_Writer_Stream('/chemin/vers/fichierdelog');
$logger = new Zend_Log($redacteur);
$logger->info("Message d'information");
"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 :
$flux = @fopen('/chemin/vers/fichierdelog', 'a', false);
if (! $flux) {
throw new Exception('Impossible d\'ouvrir le flux');
}
$redacteur = new Zend_Log_Writer_Stream($flux);
$logger = new Zend_Log($redacteur);
$logger->info("Message d'information");
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 :
$parametres = array ('host' => '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");
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.
Écrire vers Firebug
Zend_Log_Writer_Firebug envoie des données de journalisation vers la » console Firebug.

Toutes les données sont envoyées via le composant Zend_Wildfire_Channel_HttpHeaders qui utilise
les entêtes HTTP pour s'assurer que le contenu de la page n'est pas perturbé. Déboguer les requêtes AJAX qui
requière du JSON "propre" ou un réponse XML est possible avec cette approche.
Éléments requis :
-
Navigateur Firefox idéalement en version 3 mais la version 2 est aussi supportée.
-
L'extension Firefox nommée Firebug qui peut être téléchargée à cette adresse » https://addons.mozilla.org/en-US/firefox/addon/1843.
-
L'extension Firefox nommée FirePHP ui peut être téléchargée à cette adresse » https://addons.mozilla.org/en-US/firefox/addon/6149.
Exemple #1 Journaliser avec Zend_Controller_Front
// Placez ceci dans votre fichier d'amorçage
// avant de dispatcher votre contrôleur frontal
$writer = new Zend_Log_Writer_Firebug();
$logger = new Zend_Log($writer);
// Utiliser ceci dans vos fichiers de modèles, vues et contrôleurs
$logger->log('Ceci est un message de log !', Zend_Log::INFO);
Exemple #2 Journaliser sans Zend_Controller_Front
$writer = new Zend_Log_Writer_Firebug();
$logger = new Zend_Log($writer);
$request = new Zend_Controller_Request_Http();
$response = new Zend_Controller_Response_Http();
$channel = Zend_Wildfire_Channel_HttpHeaders::getInstance();
$channel->setRequest($request);
$channel->setResponse($response);
// Démarrer l'output buffering
ob_start();
// Maintenant vous pouvez appeler le logguer
$logger->log('Ceci est un message de log !', Zend_Log::INFO);
// Envoi des données de journalisation vers le navigateur
$channel->flush();
$response->sendHeaders();
Paramétrer les styles pour les priorités
Les priorités incorporées et celles définies par l'utilisateur peuvent être stylisées avec la méthode
setPriorityStyle().
$logger->addPriority('FOO', 8);
$writer->setPriorityStyle(8, 'TRACE');
$logger->foo('Foo Message');
Le style par défaut pour les priorités définies par l'utilisateur peut être paramétrer avec la méthode
setDefaultPriorityStyle().
$writer->setDefaultPriorityStyle('TRACE');
Les styles supportés sont les suivants :
| Style | Description |
|---|---|
LOG |
Affiche un message de journalisation basique |
INFO |
Affiche un message de journalisation de type information |
WARN |
Affiche un message de journalisation de type avertissement |
ERROR |
Affiche un message de journalisation de type erreur (celui-ci incrémente le compteur d'erreur de Firebug) |
TRACE |
Affiche un message de journalisation avec une trace extensible |
EXCEPTION |
Affiche un message de journalisation de type erreur avec une trace extensible |
TABLE |
Affiche un message de journalisation avec une table extensible |
Préparer les données pour la journalisation
Toute variable PHP peut être journalisée avec les priorités incorporées, un formatage spécial est requis si vous utilisez des styles de journalisation un peu plus spécialisé.
Les styles LOG, INFO, WARN, ERROR et
TRACE ne requièrent pas de formatage spécial.
Journalisation des exceptions
Pour journaliser une Zend_Exception, fournissez simplement l'objet exception au logguer. Il
n'y a pas d'importance sur la priorité ou le style que vous avez fourni puisque l'exception est automatiquement
reconnue.
$exception = new Zend_Exception('Test d\'exception');
$logger->err($exception);
Journalisation sous forme de tableau
Vous pouvez aussi journaliser des données en les formatant comme un tableau. Les colonnes sont automatiquement reconnues et la première ligne de données devient automatiquement la ligne d'entêtes.
$writer->setPriorityStyle(8, 'TABLE');
$logger->addPriority('TABLE', 8);
$table = array('Ligne de résumé pour la table',
array(
array('Colonne 1', 'Colonne 2'),
array('Ligne 1 c 1',' Ligne 1 c 2'),
array('Ligne 2 c 1',' Ligne 2 c 2')
)
);
$logger->table($table);
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 :
$redacteur = new Zend_Log_Writer_Null;
$logger = new Zend_Log($redacteur);
// va nulle part
$logger->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.
$simulacre = new Zend_Log_Writer_Mock;
$logger = new Zend_Log($simulacre);
$logger->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() :
$redacteur1 = new Zend_Log_Writer_Stream('/chemin/vers/premier/fichierdelog');
$redacteur2 = new Zend_Log_Writer_Stream('/chemin/vers/second/fichierdelog');
$logger = new Zend_Log();
$logger->addWriter($redacteur1);
$logger->addWriter($redacteur2);
// va dans les 2 rédacteurs
$logger->info("Message d'information");
| Présentation |
