2016-03-02 32 views
2

我在這裏閱讀了很多問題並閱讀了一些文檔。但仍然不明白如何用monolog格式化JSON值。Monolog JsonFormatter沒有格式化我的代碼?

這裏我的代碼不工作:

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

輸出始終在一個行,而不是在一個格式化的方式。

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

回答

3

的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

我得到一個錯誤:調用未定義的方法獨白\記錄器: :setFormatter() –