From 525d29847ae2f5560c0320f3709a2e2d695756db Mon Sep 17 00:00:00 2001 From: David Maicher Date: Fri, 15 Nov 2019 13:05:36 +0100 Subject: [PATCH 1/2] FilterHandler: fix handle empty batch of filtered records --- src/Monolog/Handler/FilterHandler.php | 2 +- tests/Monolog/Handler/FilterHandlerTest.php | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/Monolog/Handler/FilterHandler.php b/src/Monolog/Handler/FilterHandler.php index 11ede52e..bf5cb52a 100644 --- a/src/Monolog/Handler/FilterHandler.php +++ b/src/Monolog/Handler/FilterHandler.php @@ -128,7 +128,7 @@ class FilterHandler extends AbstractHandler } } - $this->getHandler($filtered[count($filtered) - 1])->handleBatch($filtered); + $this->getHandler(count($filtered) > 0 ? $filtered[count($filtered) - 1] : null)->handleBatch($filtered); } /** diff --git a/tests/Monolog/Handler/FilterHandlerTest.php b/tests/Monolog/Handler/FilterHandlerTest.php index 31b7686a..5784c1a4 100644 --- a/tests/Monolog/Handler/FilterHandlerTest.php +++ b/tests/Monolog/Handler/FilterHandlerTest.php @@ -167,4 +167,12 @@ class FilterHandlerTest extends TestCase ); $handler->handle($this->getRecord(Logger::WARNING)); } + + public function testHandleEmptyBatch() + { + $test = new TestHandler(); + $handler = new FilterHandler($test); + $handler->handleBatch(array()); + $this->assertSame(array(), $test->getRecords()); + } } From 3c3ff5881c69417576e8e0b0a9c2e32ccee09029 Mon Sep 17 00:00:00 2001 From: Jordi Boggiano Date: Fri, 15 Nov 2019 15:46:53 +0100 Subject: [PATCH 2/2] Avoid calling nested handler entirely if there is nothing left to handle --- src/Monolog/Handler/FilterHandler.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Monolog/Handler/FilterHandler.php b/src/Monolog/Handler/FilterHandler.php index bf5cb52a..949f2271 100644 --- a/src/Monolog/Handler/FilterHandler.php +++ b/src/Monolog/Handler/FilterHandler.php @@ -128,7 +128,9 @@ class FilterHandler extends AbstractHandler } } - $this->getHandler(count($filtered) > 0 ? $filtered[count($filtered) - 1] : null)->handleBatch($filtered); + if (count($filtered) > 0) { + $this->getHandler($filtered[count($filtered) - 1])->handleBatch($filtered); + } } /**