From 7284f7d9dc25970f27896743536e8138b142b978 Mon Sep 17 00:00:00 2001 From: Roel Harbers Date: Wed, 12 Oct 2016 16:28:10 +0200 Subject: [PATCH 1/2] Added the NoopHandler. This handler handles anything, but does nothing, and does not stop bubbling to the rest of the stack. This can be used for testing, or to disable a handler when overriding a configuration without influencing the rest of the stack. --- doc/02-handlers-formatters-processors.md | 2 + src/Monolog/Handler/NoopHandler.php | 42 ++++++++++++++++ tests/Monolog/Handler/NoopHandlerTest.php | 59 +++++++++++++++++++++++ 3 files changed, 103 insertions(+) create mode 100644 src/Monolog/Handler/NoopHandler.php create mode 100644 tests/Monolog/Handler/NoopHandlerTest.php diff --git a/doc/02-handlers-formatters-processors.md b/doc/02-handlers-formatters-processors.md index 93dc58dd..e832402a 100644 --- a/doc/02-handlers-formatters-processors.md +++ b/doc/02-handlers-formatters-processors.md @@ -113,6 +113,8 @@ to the wrapped handler. - [_SamplingHandler_](../src/Monolog/Handler/SamplingHandler.php): Wraps around another handler and lets you sample records if you only want to store some of them. +- [_NoopHandler_](../src/Monolog/Handler/NoopHandler.php): This handler handles anything by doing nothing. It does not stop + processing the rest of the stack. This can be used for testing, or to disable a handler when overriding a configuration. - [_NullHandler_](../src/Monolog/Handler/NullHandler.php): Any record it can handle will be thrown away. This can be used to put on top of an existing handler stack to disable it temporarily. - [_PsrHandler_](../src/Monolog/Handler/PsrHandler.php): Can be used to forward log records to an existing PSR-3 logger diff --git a/src/Monolog/Handler/NoopHandler.php b/src/Monolog/Handler/NoopHandler.php new file mode 100644 index 00000000..7c7ec03a --- /dev/null +++ b/src/Monolog/Handler/NoopHandler.php @@ -0,0 +1,42 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Handler; + +use Monolog\Logger; + +/** + * No-op + * + * This handler handles anything, but does nothing, and does not stop bubbling to the rest of the stack. + * This can be used for testing, or to disable a handler when overriding a configuration without + * influencing the rest of the stack. + * + * @author Roel Harbers + */ +class NoopHandler extends Handler +{ + /** + * {@inheritdoc} + */ + public function isHandling(array $record): bool + { + return true; + } + + /** + * {@inheritdoc} + */ + public function handle(array $record): bool + { + return false; + } +} diff --git a/tests/Monolog/Handler/NoopHandlerTest.php b/tests/Monolog/Handler/NoopHandlerTest.php new file mode 100644 index 00000000..274c35b4 --- /dev/null +++ b/tests/Monolog/Handler/NoopHandlerTest.php @@ -0,0 +1,59 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Handler; + +use Monolog\Test\TestCase; +use Monolog\Logger; + +/** + * @covers Monolog\Handler\NoopHandler::handle + */ +class NoopHandlerTest extends TestCase +{ + /** + * @dataProvider logLevelsProvider + */ + public function testIsHandling($level) + { + $handler = new NoopHandler(); + $this->assertTrue($handler->isHandling($this->getRecord($level))); + } + + public function isHandleProvider() + { + return array_map( + function ($level) { + return [$level]; + }, + array_values(Logger::getLevels()) + ); + } + + /** + * @dataProvider logLevelsProvider + */ + public function testHandle($level) + { + $handler = new NoopHandler(); + $this->assertFalse($handler->handle($this->getRecord($level))); + } + + public function logLevelsProvider() + { + return array_map( + function ($level) { + return [$level]; + }, + array_values(Logger::getLevels()) + ); + } +} From c3703081396b98df483f69da552370d3d6e12931 Mon Sep 17 00:00:00 2001 From: Roel Harbers Date: Wed, 12 Oct 2016 16:44:30 +0200 Subject: [PATCH 2/2] removed unused data provider in test --- tests/Monolog/Handler/NoopHandlerTest.php | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/tests/Monolog/Handler/NoopHandlerTest.php b/tests/Monolog/Handler/NoopHandlerTest.php index 274c35b4..df12f4e2 100644 --- a/tests/Monolog/Handler/NoopHandlerTest.php +++ b/tests/Monolog/Handler/NoopHandlerTest.php @@ -28,16 +28,6 @@ class NoopHandlerTest extends TestCase $this->assertTrue($handler->isHandling($this->getRecord($level))); } - public function isHandleProvider() - { - return array_map( - function ($level) { - return [$level]; - }, - array_values(Logger::getLevels()) - ); - } - /** * @dataProvider logLevelsProvider */