summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/Monolog/Formatter/NormalizerFormatter.php2
-rw-r--r--tests/Monolog/Formatter/NormalizerFormatterTest.php18
2 files changed, 19 insertions, 1 deletions
diff --git a/src/Monolog/Formatter/NormalizerFormatter.php b/src/Monolog/Formatter/NormalizerFormatter.php
index 17972da..592713f 100644
--- a/src/Monolog/Formatter/NormalizerFormatter.php
+++ b/src/Monolog/Formatter/NormalizerFormatter.php
@@ -89,7 +89,7 @@ class NormalizerFormatter implements FormatterInterface
foreach ($data as $key => $value) {
if ($count++ >= 1000) {
- $normalized['...'] = 'Over 1000 items, aborting normalization';
+ $normalized['...'] = 'Over 1000 items ('.($data instanceof \Generator ? 'generator function' : count($data).' total').'), aborting normalization';
break;
}
$normalized[$key] = $this->normalize($value, $depth + 1);
diff --git a/tests/Monolog/Formatter/NormalizerFormatterTest.php b/tests/Monolog/Formatter/NormalizerFormatterTest.php
index 0043afd..381071f 100644
--- a/tests/Monolog/Formatter/NormalizerFormatterTest.php
+++ b/tests/Monolog/Formatter/NormalizerFormatterTest.php
@@ -226,6 +226,24 @@ class NormalizerFormatterTest extends \PHPUnit_Framework_TestCase
$this->assertEquals(@json_encode([$resource]), $res);
}
+ public function testNormalizeHandleLargeArrays()
+ {
+ $formatter = new NormalizerFormatter();
+ $largeArray = range(1, 2000);
+
+ $res = $formatter->format(array(
+ 'level_name' => 'CRITICAL',
+ 'channel' => 'test',
+ 'message' => 'bar',
+ 'context' => array($largeArray),
+ 'datetime' => new \DateTime,
+ 'extra' => array(),
+ ));
+
+ $this->assertCount(1000, $res['context'][0]);
+ $this->assertEquals('Over 1000 items (2000 total), aborting normalization', $res['context'][0]['...']);
+ }
+
/**
* @expectedException RuntimeException
*/