Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
Je lutte avec le composant Zend_Log et les options de redéfinition du format de log pour ajouter l'IP du client.
Dans un premier temps et sans modifier le format, j'arrive bien à envoyer mes LOG en base MySQL :
[lang=php] // Configuration des LOG en base MySQL $parametres = array ( 'host' => '127.0.0.1', 'username' => 'toto', 'password' => '****', 'dbname' => '****'); $db = Zend_Db::factory('PDO_MYSQL', $parametres); //Create log system... $logger = new Zend_Log($writer = new Zend_Log_Writer_Db($db,'log',array('LOG_priority' => 'priority', 'LOG_msg' => 'message' ))); $logger->info("Message d'information");
Dès que j'essaie de redéfinir le format pour ajouter l'IP du client dans une colonne de ma table de données,
[lang=php] // Configuration des LOG en base MySQL $parametres = array ( 'host' => '127.0.0.1', 'username' => 'toto', 'password' => '****', 'dbname' => '****'); $db = Zend_Db::factory('PDO_MYSQL', $parametres); //Create log system... $log = new Zend_Log($writer = new Zend_Log_Writer_Db($db,'log',array('LOG_priority' => 'priority', 'LOG_msg' => 'message' ))); // Set parameters to be recorded... $log->setEventItem( 'IP_cli', $_SERVER['REMOTE_ADDR']); // Add params to the log journal... $defaultFormat = Zend_Log_Formatter_Simple::DEFAULT_FORMAT; $format = '%IP_cli% ' . $defaultFormat; $writer->setFormatter( new Zend_Log_Formatter_Simple($format)); $log->info("Message d'information");
j'ai l'erreur suivante :
Fatal error: Uncaught exception 'Zend_Log_Exception' with message 'Zend_Log_Writer_Db does not support formatting' in G:\ZEND\library\Zend\Log\Writer\Db.php:107 Stack trace: #0 G:\mnt\var\www\........\public\index.php(47): Zend_Log_Writer_Db->setFormatter(Object(Zend_Log_Formatter_Simple)) #1 {main} thrown in G:\ZEND\library\Zend\Log\Writer\Db.php on line 107
Please Help
Dernière modification par cyrille.t (30-03-2012 12:06:11)
Hors ligne
Je suis pas un expert de Zend_Log mais si tu regardes dans ta classe Zend_Log_Writer_Db tu verras que ta fonction setFormatter ne fait finalement que retourner une exception.
[lang=php] /** * Formatting is not possible on this writer * * @return void * @throws Zend_Log_Exception */ public function setFormatter(Zend_Log_Formatter_Interface $formatter) { require_once 'Zend/Log/Exception.php'; throw new Zend_Log_Exception(get_class($this) . ' does not support formatting'); }
L'erreur que ton code retourne est donc "normale" .
As-tu finalement résolu ton problème ?
Dernière modification par djeremh (13-04-2012 17:06:47)
Hors ligne
Hum, je vois ... je ne suis pas allé voir dans les library Zend -_-
... et non, le problème est toujours d'actualité :x
il faudrait que je m'y penche à nouveau ; j'avais trouvé des tickets où la résolution parlait de modif dans les lib Zend, mais pas trop regarder....
une idée ?
Hors ligne
Zend_Log_Formatter ne sert que pour les loggeur en mode ligne
Db est en mode colonne
ajoute ta colonne ip à ce tableau : ,array('LOG_priority' => 'priority', 'LOG_msg' => 'message' )));
Hors ligne
Merci de ta réponse Moosh,
mais j'ai déjà essayé et sans résultats....
$log = new Zend_Log($writer = new Zend_Log_Writer_Db($db,'log',array('LOG_priority' => 'priority', 'LOG_msg' => 'message', 'IP_cli' => $_SERVER['REMOTE_ADDR'])));
Le champ "IP_Cli" de ma table se remplit à NULL alors qu'un echo $_SERVER['REMOTE_ADDR'] me retourne bien l'IP client.
Une autre idée ??
Hors ligne