2017-09-23 2 views
2

Id aime ajouter un champ qui contient l'ID de l'utilisateur connecté dans le zend db logger.ajouter le champ userid à zend db logger

Voici mon code actuel:

$mapping = array(
     'timestamp' => 'created', 
     'priorityName' => 'type', 
     'message' => 'message'     
);  
$dbAdapter = Pluto::database()->getMasterAdapter(); 
$writer = new \Zend\Log\Writer\Db($dbAdapter,'logs',$mapping); 
$this->logger->addWriter($writer); 

Ma colonne userid sera userid. Si l'utilisateur n'est pas connecté, il doit insérer 0.

Vous ne savez pas quoi faire ici.

MISE À JOUR

Voici mon processeur actuel:

namespace Pluto\Log; 

use Zend\Log\Processor\ProcessorInterface; 

class UserAwareProcessor implements ProcessorInterface 
{ 
    /** 
    * @param array $event event data 
    * @return array event data 
    */ 
    public function process(array $event) 
    { 
     if (! isset($event['extra'])) { 
      $event['extra'] = []; 
     } 

     $event['extra']['userid'] = 5; 

     return $event; 
    } 
} 

Répondre

0

Vous pouvez utiliser une coutume log processor pour ajouter facilement/PREPEND toutes les données à vos journaux juste avant l'écriture. Étant donné que les processeurs sont appelés de l'enregistreur avant l'événement de journal est passé à l'écrivain, je créerais MyApp\Log\UserAwareProcessor avec une signature suivante et le corps:

<?php 
namespace MyApp\Log; 

use Zend\Log\Processor\ProcessorInterface 

class UserAwareProcessor implements ProcessorInterface 
{ 
    /** 
    * @param array $event event data 
    * @return array event data 
    */ 
    public function process(array $event) 
    { 
     if (! isset($event['extra'])) { 
      $event['extra'] = []; 
     } 

     $event['extra']['userId'] = $this->getUserId(); 

     return $event; 
    } 

    /** 
    * @return int 
    */ 
    private function getUserId() 
    { 
     // Read the id from session or any other source and return it 
    } 
} 

A la fin, après avoir réglé un écrivain à votre enregistreur, vous aurez Il faut aussi mettre le processeur quelque chose comme:

$this->logger->addWriter($writer); 
$processor = new MyApp\Log\UserAwareProcessor(); 
$this->logger->addProcessor($processor); 

Vous pouvez également à la caisse log formatters.

Espérons que ça aide.

+0

Ne semble pas être en cours de mise à jour dans la colonne userid de la base de données. Vérifier mon code mis à jour – jkushner