2016-03-02 6 views
2

Я прочитал здесь много вопросов и прочитал некоторые документы. Но все еще не понимаю, как форматировать значение JSON с помощью монолога.Монолог JsonFormatter не форматирует мой код?

Вот мой код, который не работает:

php $formatter = new JsonFormatter(); $log->addInfo($formatter->format(['foo' => 'bar']));

Выход всегда в одной строке, а не в отформатированный способом.

bash [2016-03-02 07:45:57] parameters.INFO: {"foo":"bar"} [] []

ответ

3

The JsonFormatter предназначается, чтобы быть использованы для форматирования вывода.

$log = new \Monolog\Logger('my_log'); 
$stream_handler = new \Monolog\Handler\StreamHandler('my_log_file.log'); 
$stream_handler->setFormatter(new \Monolog\Formatter\JsonFormatter()); 
$log->pushHandler($stream_handler); 

$log->addError('foo'); 

Без JsonFormatter вы получите нормальный выход:

[2016-04-04 16:37:55] my_log.ERROR: foo [] [] 

С JsonFormatter вы получите JSON результат:

{"message":"foo","context":[],"level":400,"level_name":"ERROR","channel":"my_log","datetime":{"date":"2016-04-04 16:38:14.102258","timezone_type":3,"timezone":"UTC"},"extra":[]} 
+0

Я получаю сообщение об ошибке: Вызов неопределенной метод Монолог \ Logger: : setFormatter() –