2011-08-12 3 views
0

Dans mon fichier bootstrap, je lance l'enregistreur et tout fonctionne correctement. Ce dont j'ai besoin maintenant c'est que le logger enregistre aussi le user_id donné par l'instance de zend_auth. Ici l'enregistreur je lance:zend framework auth dans logger dans bootstrap

public function _initLogger(){ 

    $resource = $this->getPluginResource('db'); 
$dbAdapter = $resource->getDbAdapter(); 
    $columnMapping = array(
     'level' => 'priorityName', 
     'priority' => 'priority', 
     'message' => 'message', 
     'created' => 'timestamp', 
     'user_agent'=> 'user_agent', 
     'get_vars' => 'get_vars', 
     'post_vars' => 'post_vars', 
     'ip' => 'ip', 
     'id_user' => 'id_user', 
    ); 

    $auth = Zend_Auth::getInstance(); 

    $writerDb = new Zend_Log_Writer_Db($dbAdapter, 'tbl_log', $columnMapping); 
    $logger = new Zend_Log($writerDb); 

    $logger->setEventItem('datetime',date('Y-m-d H:i:s')); 
    $logger->setEventItem('user_agent',$_SERVER['HTTP_USER_AGENT']); 
    $logger->setEventItem('get_vars',print_r($_GET,true)); 
    $logger->setEventItem('post_vars',print_r($_POST,true)); 
    $logger->setEventItem('ip',$_SERVER['REMOTE_ADDR']); 
    $logger->setEventItem('id_user',$auth->getIdentity()->id); 



    $logger->addPriority('login', 10); 
    $logger->addPriority('logout', 11); 
    $logger->addPriority('trans', 12); 
    $logger->addPriority('transfailed', 13); 

    Zend_Registry::set('logger', $logger); 
} 

Je reçois pas d'erreur, mais l'ID utilisateur n'est pas retrieved ... ou emmagasinés

+2

Qu'avez-vous lorsque vous faites var_dump ($ auth-> getIdentity()); – yokoloko

+0

il n'y a rien ... – cwhisperer

Répondre

1

Au cours de bootstrap, auth informations ne sont pas disponibles. Vous devez ajouter les lignes:

$logger = Zend_Registry::get('logger'); 

$logger->setEventItem('id_user',$auth->getIdentity()->id); 

Après vous obtenez les informations d'identité de l'utilisateur (dans votre contrôleur de connexion).