Monolog JsonFormatter не форматирует мой код?
Я прочитал много вопросов здесь и прочитал некоторую документацию. Но до сих пор не понимаю, как форматировать значение JSON с монологом.
Вот мой код, который не работает:
php
$formatter = new JsonFormatter();
$log->addInfo($formatter->format(['foo' => 'bar']));
Вывод всегда в одной строке, а не в отформатированном виде.
bash
[2016-03-02 07:45:57] parameters.INFO: {"foo":"bar"} [] []
1 ответ
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":[]}