From e012bf1b63b4bc10eda73c683068d27c2528afd3 Mon Sep 17 00:00:00 2001 From: Sergey Rabochiy Date: Fri, 29 Nov 2013 16:09:42 +0700 Subject: [PATCH 1/2] Fix boolean to string convertation. Fix double normalization. Details bug: $context = ["false", false]; // formatted as {"0":"false","1":"false"} when need {"0":"false","1":false} --- src/Monolog/Formatter/LineFormatter.php | 31 +++++++++---------- tests/Monolog/Formatter/LineFormatterTest.php | 4 ++- 2 files changed, 17 insertions(+), 18 deletions(-) diff --git a/src/Monolog/Formatter/LineFormatter.php b/src/Monolog/Formatter/LineFormatter.php index daa919bf..69324f5c 100644 --- a/src/Monolog/Formatter/LineFormatter.php +++ b/src/Monolog/Formatter/LineFormatter.php @@ -11,6 +11,8 @@ namespace Monolog\Formatter; +use Exception; + /** * Formats incoming records into a one-line string * @@ -68,33 +70,28 @@ class LineFormatter extends NormalizerFormatter return $message; } - protected function normalize($data) + protected function normalizeException(Exception $e) { - if (is_bool($data) || is_null($data)) { - return var_export($data, true); + $previousText = ''; + if ($previous = $e->getPrevious()) { + do { + $previousText .= ', '.get_class($previous).': '.$previous->getMessage().' at '.$previous->getFile().':'.$previous->getLine(); + } while ($previous = $previous->getPrevious()); } - if ($data instanceof \Exception) { - $previousText = ''; - if ($previous = $data->getPrevious()) { - do { - $previousText .= ', '.get_class($previous).': '.$previous->getMessage().' at '.$previous->getFile().':'.$previous->getLine(); - } while ($previous = $previous->getPrevious()); - } - - return '[object] ('.get_class($data).': '.$data->getMessage().' at '.$data->getFile().':'.$data->getLine().$previousText.')'; - } - - return parent::normalize($data); + return '[object] ('.get_class($e).': '.$e->getMessage().' at '.$e->getFile().':'.$e->getLine().$previousText.')'; } protected function convertToString($data) { - if (null === $data || is_scalar($data)) { + if (null === $data|| is_bool($data)) { + return var_export($data, true); + } + + if (is_scalar($data)) { return (string) $data; } - $data = $this->normalize($data); if (version_compare(PHP_VERSION, '5.4.0', '>=')) { return $this->toJson($data, true); } diff --git a/tests/Monolog/Formatter/LineFormatterTest.php b/tests/Monolog/Formatter/LineFormatterTest.php index fa3fa59d..7d7643a7 100644 --- a/tests/Monolog/Formatter/LineFormatterTest.php +++ b/tests/Monolog/Formatter/LineFormatterTest.php @@ -42,9 +42,11 @@ class LineFormatterTest extends \PHPUnit_Framework_TestCase 'context' => array( 'foo' => 'bar', 'baz' => 'qux', + 'bool' => false, + 'null' => null, ) )); - $this->assertEquals('['.date('Y-m-d').'] meh.ERROR: foo {"foo":"bar","baz":"qux"} []'."\n", $message); + $this->assertEquals('['.date('Y-m-d').'] meh.ERROR: foo {"foo":"bar","baz":"qux","bool":false,"null":null} []'."\n", $message); } public function testDefFormatExtras() From 4d3723c68d9b2483f84298ce2e578d4288a418f1 Mon Sep 17 00:00:00 2001 From: Sergey Rabochiy Date: Fri, 29 Nov 2013 21:05:44 +0700 Subject: [PATCH 2/2] Code style fix --- src/Monolog/Formatter/LineFormatter.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Monolog/Formatter/LineFormatter.php b/src/Monolog/Formatter/LineFormatter.php index 69324f5c..af3d14b1 100644 --- a/src/Monolog/Formatter/LineFormatter.php +++ b/src/Monolog/Formatter/LineFormatter.php @@ -84,7 +84,7 @@ class LineFormatter extends NormalizerFormatter protected function convertToString($data) { - if (null === $data|| is_bool($data)) { + if (null === $data || is_bool($data)) { return var_export($data, true); }