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 :
// 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,
// 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.
/** * 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