<?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