From 05f6ed7205319323df4d5526358a7aeb6d18b1cd Mon Sep 17 00:00:00 2001 From: Jordi Boggiano Date: Tue, 12 Nov 2019 22:10:50 +0100 Subject: [PATCH 1/6] Fix php 5.3 syntax --- tests/Monolog/Formatter/NormalizerFormatterTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/Monolog/Formatter/NormalizerFormatterTest.php b/tests/Monolog/Formatter/NormalizerFormatterTest.php index 123b5cf6..82c0ebaf 100644 --- a/tests/Monolog/Formatter/NormalizerFormatterTest.php +++ b/tests/Monolog/Formatter/NormalizerFormatterTest.php @@ -92,7 +92,7 @@ class NormalizerFormatterTest extends \PHPUnit_Framework_TestCase } $formatter = new NormalizerFormatter('Y-m-d'); - $e = new \SoapFault('foo', 'bar', 'hello', (object) ['foo' => 'world']); + $e = new \SoapFault('foo', 'bar', 'hello', (object) array('foo' => 'world')); $formatted = $formatter->format(array( 'exception' => $e, )); From dc2895c80da6bcc9b9f26ab6d0736b86f019813f Mon Sep 17 00:00:00 2001 From: Jordi Boggiano Date: Tue, 12 Nov 2019 22:13:21 +0100 Subject: [PATCH 2/6] Suppress errors when json_encode has ignoreErrors set --- src/Monolog/Utils.php | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/Monolog/Utils.php b/src/Monolog/Utils.php index de408016..180a159d 100644 --- a/src/Monolog/Utils.php +++ b/src/Monolog/Utils.php @@ -38,13 +38,17 @@ class Utils $encodeFlags = JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE; } - $json = json_encode($data, $encodeFlags); - - if (false === $json) { - if ($ignoreErrors) { + if ($ignoreErrors) { + $json = @json_encode($data, $encodeFlags); + if (false === $json) { return 'null'; } + return $json; + } + + $json = json_encode($data, $encodeFlags); + if (false === $json) { $json = self::handleJsonError(json_last_error(), $data); } From f97cc755af78886da8b5878ab7db225fbbc0f8f3 Mon Sep 17 00:00:00 2001 From: Jordi Boggiano Date: Tue, 12 Nov 2019 22:28:59 +0100 Subject: [PATCH 3/6] Fix 5.3/5.4 builds --- tests/Monolog/Formatter/NormalizerFormatterTest.php | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/tests/Monolog/Formatter/NormalizerFormatterTest.php b/tests/Monolog/Formatter/NormalizerFormatterTest.php index 82c0ebaf..38c73170 100644 --- a/tests/Monolog/Formatter/NormalizerFormatterTest.php +++ b/tests/Monolog/Formatter/NormalizerFormatterTest.php @@ -190,7 +190,11 @@ class NormalizerFormatterTest extends \PHPUnit_Framework_TestCase restore_error_handler(); - $this->assertEquals('null', $res); + if (PHP_VERSION_ID < 50500) { + $this->assertEquals('[{"bar":{"foo":null}},{"foo":{"bar":null}}]', $res); + } else { + $this->assertEquals('null', $res); + } } public function testCanNormalizeReferences() @@ -223,7 +227,11 @@ class NormalizerFormatterTest extends \PHPUnit_Framework_TestCase restore_error_handler(); - $this->assertEquals('null', $res); + if (PHP_VERSION_ID < 50500) { + $this->assertEquals('[null]', $res); + } else { + $this->assertEquals('null', $res); + } } public function testNormalizeHandleLargeArraysWithExactly1000Items() From ec3e0e3f907d25456063ec1e1799eb0bcf4a5bab Mon Sep 17 00:00:00 2001 From: Jordi Boggiano Date: Wed, 13 Nov 2019 10:47:25 +0100 Subject: [PATCH 4/6] set json flags correctly for SlackRecord, fixes #1396, closes #1397 --- src/Monolog/Handler/Slack/SlackRecord.php | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/Monolog/Handler/Slack/SlackRecord.php b/src/Monolog/Handler/Slack/SlackRecord.php index 2a8818d4..39455501 100644 --- a/src/Monolog/Handler/Slack/SlackRecord.php +++ b/src/Monolog/Handler/Slack/SlackRecord.php @@ -208,13 +208,17 @@ class SlackRecord { $normalized = $this->normalizerFormatter->format($fields); $prettyPrintFlag = defined('JSON_PRETTY_PRINT') ? JSON_PRETTY_PRINT : 128; + $flags = 0; + if (PHP_VERSION_ID >= 50400) { + $flags = JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE; + } $hasSecondDimension = count(array_filter($normalized, 'is_array')); $hasNonNumericKeys = !count(array_filter(array_keys($normalized), 'is_numeric')); return $hasSecondDimension || $hasNonNumericKeys - ? Utils::jsonEncode($normalized, $prettyPrintFlag) - : Utils::jsonEncode($normalized); + ? Utils::jsonEncode($normalized, $prettyPrintFlag | $flags) + : Utils::jsonEncode($normalized, $flags); } /** From 4a70fb3353107bf1be596958d395ec29b32dbbec Mon Sep 17 00:00:00 2001 From: Jordi Boggiano Date: Wed, 13 Nov 2019 10:51:07 +0100 Subject: [PATCH 5/6] Add formatter forwarding to BufferHandler as well --- src/Monolog/Handler/BufferHandler.php | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/Monolog/Handler/BufferHandler.php b/src/Monolog/Handler/BufferHandler.php index 61d1b50c..a7e36458 100644 --- a/src/Monolog/Handler/BufferHandler.php +++ b/src/Monolog/Handler/BufferHandler.php @@ -126,4 +126,22 @@ class BufferHandler extends AbstractHandler $this->handler->reset(); } } + + /** + * {@inheritdoc} + */ + public function setFormatter(FormatterInterface $formatter) + { + $this->handler->setFormatter($formatter); + + return $this; + } + + /** + * {@inheritdoc} + */ + public function getFormatter() + { + return $this->handler->getFormatter(); + } } From ac44cccd84d77609f501d91c1c955513017bf267 Mon Sep 17 00:00:00 2001 From: Jordi Boggiano Date: Wed, 13 Nov 2019 10:54:16 +0100 Subject: [PATCH 6/6] Update changelog --- CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9b0f5280..a00c1ece 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,12 @@ +### 1.25.2 (2019-11-13) + + * Fixed normalization of Traversables to avoid traversing them as not all of them are rewindable + * Fixed setFormatter/getFormatter to forward to the nested handler in FilterHandler, FingersCrossedHandler, BufferHandler and SamplingHandler + * Fixed BrowserConsoleHandler formatting when using multiple styles + * Fixed normalization of exception codes to be always integers even for PDOException which have them as numeric strings + * Fixed normalization of SoapFault objects containing non-strings as "detail" + * Fixed json encoding across all handlers to always attempt recovery of non-UTF-8 strings instead of failing the whole encoding + ### 1.25.1 (2019-09-06) * Fixed forward-compatible interfaces to be compatible with Monolog 1.x too.