2017-09-23 2 views
2

IDは、ログインしたユーザーのユーザーIDを含むフィールドをzend db loggerに追加するようにします。zend db loggerにuseridフィールドを追加

$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); 

私のユーザーID列がuserid次のようになります。

は、ここに私の現在のコードです。ユーザーがログインしていない場合は、0を挿入する必要があります。

ここで何をすべきか分かりません。

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; 
    } 
} 

答えて

0

はあなただけで簡単に書き込む前に、あなたのログへ/前付加任意のデータを追加するためのカスタムlog processorを使用することができます。

UPDATE

は、ここに私の現在のプロセッサです。あなたがよ、あなたのロガーにライターを設定した後、最後には

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

:ログイベントがライターに渡される前に、プロセッサはロガーから呼び出されているので、私は、次のシグネチャと身体とのMyApp\Log\UserAwareProcessorを作成しますプロセッサーを次のように設定する必要があります。

log formattersをチェックアウトすることもできます。

希望します。

+0

データベースの列useridが更新されていないようです。更新されたコードを確認する – jkushner

関連する問題