2014-12-01 3 views
0

Как я могу создать собственный журнал (используя Zend2) и установить имя пользователя для каждого события журнала. Вот мой пример того, как I`m пытается:ZF2 custom logfile, set username

public function log() 
{ 

    $log_file = 'path/to/logfile.log'; 

    $format = '%timestamp% %priorityName% (%username%) %message%'; 
    $formatter = new Zend\Log\Formatter\Simple($format); 
    $formatter->setDateTimeFormat('H:i:s'); 

    $formatter->format(array('username'=> SET_USER_NAME)); 

    $logWriter = new LogWriter($log_file); 
    $logWriter->setFormatter($formatter); 

    $logger = new Logger; 
    $logger->addWriter($logWriter); 

    return $logger; 
} 

Я попробовал следующее

$this->log()->info(" Log message "); 

И результат есть:

11:33:54 INFO (%username%) Log message 

Спасибо!

ответ

0

Вы можете использовать third parameter of log methodextra - массив дополнительных данных, которые преобразуются в формат JSON и автоматически добавляются в журнал сообщение от форматировщиком (Zend\Log\Formatter\Simple::format)

Простой пример:

$writer = new \Zend\Log\Writer\Stream('php://output'); 
$logger = new \Zend\Log\Logger(); 
$logger->addWriter($writer); 

$logger->info('Informational message', ['user' => 'administrator']); 

Выходы что-то вроде этого:

2014-12-01T13:00:00+00:00 INFO (6): Informational message {"user":"administrator"}