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..df12f4e2 --- /dev/null +++ b/tests/Monolog/Handler/NoopHandlerTest.php @@ -0,0 +1,49 @@ + + * + * 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))); + } + + /** + * @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()) + ); + } +}