mar
10
mar '09
PEAR::Log VS Zend_log
À 17:38 dans la rubrique PHP / PEAR
←
/ #923
/ rss
/ →
Il y a un peu moins d'un an j'ai testé Pear::Log, ici j'ai voulu comparer mes tests en les réécrivant pour zend_log
En considérant que Zend et Pear sont dans mon include_path
<?php include_once('Zend/Log.php'); include_once('Zend/Log/Writer/Stream.php'); include_once('Zend/Log/Writer/Null.php'); include_once('Zend/Log/Writer/Firebug.php'); include_once('Zend/Controller/Front.php'); require_once 'Pear/Log.php'; // FILE touch('./out.log'); $loggerPearFile = &Log::singleton('file', './out.log', 'TEST'); $loggerZendFile = new Zend_Log(); $redacteurZendFile = new Zend_Log_Writer_Stream('./out.log'); $loggerZendFile->addWriter($redacteurZendFile); // DISPLAY $confDisplay = array('error_prepend' => '<font color="#ff0000"><tt>', 'error_append' => '</tt></font>'); $loggerPearDisplay = &Log::singleton('display', '', '', $confDisplay, PEAR_LOG_DEBUG); $loggerZendDisplay = new Zend_Log(); $redacteurZendDisplay = new Zend_Log_Writer_Stream('php://output'); $loggerZendDisplay->addWriter($redacteurZendDisplay); // Null $loggerPearNull = &Log::singleton('null'); $redacteurZendNull = new Zend_Log_Writer_Null; $loggerZendNull = new Zend_Log($redacteurZendNull); // FIREBUG $loggerPearFirebug = &Log::singleton('firebug', '', 'PHP', array('buffering' => true), PEAR_LOG_DEBUG); $redacteurZendFirebug = new Zend_Log_Writer_Firebug(); $loggerZendFirebug = new Zend_Log($redacteurZendFirebug); // error_log $loggerPearErrorLog = &Log::singleton('error_log', PEAR_LOG_TYPE_SYSTEM, 'ident'); //* // MAIL // On fixe le sujet du mail $confMail = array('subject' => 'Important Log Events', 'from' => 'from.website@example.com'); $loggerPearMail = &Log::singleton('mail', 'webmaster@example.com', 'ident', $confMail); $mail = new Zend_Mail(); $mail->setFrom('from.website@example.com') ->addTo('webmaster@example.com'); $writer = new Zend_Log_Writer_Mail($mail); // On fixe le sujet du mail $writer->setSubjectPrependText('Important Log Events'); // Only email warning level entries and higher. $writer->addFilter(Zend_Log::WARN); $loggerZendMail = new Zend_Log(); $loggerZendMail->addWriter($writer); //*/ //* // Windows $confWindows = array('title' => 'Sample Log Output'); $loggerPearWindows = &Log::singleton('win', 'LogWindow', 'ident', $confWindows); //*/ //* // sql $confSql = array('dsn' => 'mysql://root@localhost/logs'); $loggerPearSql = &Log::singleton('sql', 'log_table', 'ident', $confSql); $parametres = array ('host' => '127.0.0.1', 'username' => 'root', 'password' => 'localhost', 'dbname' => 'logs'); $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); $loggerZendSql = new Zend_Log($redacteur); /* Creating a new database connection. / $confSQLite1 = array('filename' => 'c:\var\log.db', 'mode' => 0666, 'persistent' => true); $loggerPearSQLite1 =& Log::factory('sqlite', 'log_table', 'ident', $confSQLite1); $loggerPearSQLite1->log('logging an event' . __LINE__ , PEAR_LOG_WARNING); /* Using an existing database connection. / unset($error); $db = sqlite_open('c:\var\log.db', 0666, $error); $loggerPearSQLite2 =& Log::factory('sqlite', 'log_table', 'ident', $db); $loggerPearSQLite2->log('logging an event ' . __LINE__ , PEAR_LOG_WARNING); Ajoute les messages dans la table sqlite désignée sqlite_close($db); //*/ $loggerPearcomposite = &Log::singleton('composite'); $loggerZendComposite = new Zend_Log(); $loggerZendComposite->addWriter($redacteurZendDisplay); $loggerZendComposite->addWriter($redacteurZendFile); $loggerZendComposite->addWriter($redacteurZendNull); // va dans les 2 rédacteurs $loggerPearcomposite->addChild($console); $loggerPearcomposite->addChild($loggerPearFile); $loggerPearcomposite->addChild($loggerPearDisplay); $loggerPearcomposite->addChild($loggerPearWindows); $loggerPearcomposite->addChild($loggerPearSQL); $loggerPearcomposite->addChild($loggerPearNull); $loggerPearcomposite->addChild($loggerPearFirebug); $loggerPearcomposite->addChild($loggerPearErrorLog); $loggerPearcomposite->addChild($loggerPearMail); $loggerPearcomposite->log('Ce message est logué dans tous les éléments du composite PEAR.' . date('c')); $loggerZendComposite->info('Ce message est logué dans tous les éléments du composite ZF.' . date('c')); $loggerPearWindows->log('This event will be logged only on Popup.'); // ouvre un popup et affiche tous les messages $loggerPearFile->log('Message loggué dans un fichier par pear.'); $loggerZendFile->log('Message loggué dans un fichier par zf', Zend_Log::INFO); //Stocke les messages dans un fichier $loggerPearDisplay->log('Message envoyé à l\'affichage par pear.'); $loggerZendDisplay->log('Message envoyé à l\'affichage par zf.', Zend_Log::INFO); //Affiche les messages dans le flux html $loggerPearNull->log('This event will be logged only into the FIELDS OF THE NEPHILIM.'); $loggerZendNull->log('This event will be logged only into the FIELDS OF THE NEPHILIM.', Zend_Log::INFO); //ne fait rien <img src="/blog/themes/travelogue/smilies/smile.gif" alt=":-)" class="smiley" /> $loggerPearFirebug->log('This event will be logged only to FireBug via Pear.'); // Maintenant vous pouvez appeler le logguer //$loggerZendFirebug->log('This event will be logged only to FireBug via ZF.', Zend_Log::INFO); $loggerPearSql->log('Message envoyé en base de données par pear.'); $loggerZendSql->log('Message envoyé en base de données par zf.', Zend_Log::INFO); //Affiche les messages dans le flux html $loggerPearMail->log('This event will be logged only by mail.'); // tente d'envoyer un mail (dans mons cas sans smtp ca n'a pas marché) echo '<hr>out.log:<pre>'; readfile('./out.log'); ?>
L'output.
Les 4 premières lignes par les writer display. Ue fois en direct et une fois en composite.
Ensuite ce qui est dans le fichier.
[output] info: Ce message est logué dans tous les éléments du composite PEAR.2009-03-10T18:38:52+01:00 2009-03-10T18:38:52+01:00 INFO (6): Ce message est logué dans tous les éléments du composite ZF. 2009-03-10T18:38:52+01:00 info: Message envoyé à l'affichage par pear. 2009-03-10T18:38:52+01:00 INFO (6): Message envoyé à l'affichage par zf. ------------------------- out.log: Mar 10 18:38:52 TEST [info] Ce message est logué dans tous les éléments du composite PEAR.2009-03-10T18:38:52+01:00 2009-03-10T18:38:52+01:00 INFO (6): Ce message est logué dans tous les éléments du composite ZF.2009-03-10T18:38:52+01:00 Mar 10 18:38:52 TEST [info] Message loggué dans un fichier par pear. 2009-03-10T18:38:52+01:00 INFO (6): Message loggué dans un fichier par zf








Commentaires
Aucun commentaire pour le moment.
Ajouter un commentaire