فهرست منبع

Merge pull request #868 from ComaVN/noop-handler

Added the NoopHandler.
Jordi Boggiano 9 سال پیش
والد
کامیت
d7febf922c
3فایلهای تغییر یافته به همراه93 افزوده شده و 0 حذف شده
  1. 2 0
      doc/02-handlers-formatters-processors.md
  2. 42 0
      src/Monolog/Handler/NoopHandler.php
  3. 49 0
      tests/Monolog/Handler/NoopHandlerTest.php

+ 2 - 0
doc/02-handlers-formatters-processors.md

@@ -113,6 +113,8 @@
    to the wrapped handler.
    to the wrapped handler.
 - [_SamplingHandler_](../src/Monolog/Handler/SamplingHandler.php): Wraps around another handler and lets you sample records
 - [_SamplingHandler_](../src/Monolog/Handler/SamplingHandler.php): Wraps around another handler and lets you sample records
    if you only want to store some of them.
    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
 - [_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.
   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
 - [_PsrHandler_](../src/Monolog/Handler/PsrHandler.php): Can be used to forward log records to an existing PSR-3 logger

+ 42 - 0
src/Monolog/Handler/NoopHandler.php

@@ -0,0 +1,42 @@
+<?php declare(strict_types=1);
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Roel Harbers <roelharbers@gmail.com>
+ *
+ * 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 <roelharbers@gmail.com>
+ */
+class NoopHandler extends Handler
+{
+    /**
+     * {@inheritdoc}
+     */
+    public function isHandling(array $record): bool
+    {
+        return true;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function handle(array $record): bool
+    {
+        return false;
+    }
+}

+ 49 - 0
tests/Monolog/Handler/NoopHandlerTest.php

@@ -0,0 +1,49 @@
+<?php declare(strict_types=1);
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Roel Harbers <roelharbers@gmail.com>
+ *
+ * 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())
+        );
+    }
+}