Browse Source

Fix Buffer, Group and FingersCrossed handlers to make use of their processors, fixes #170

Jordi Boggiano 13 years ago
parent
commit
5feb21ae1a

+ 6 - 0
src/Monolog/Handler/BufferHandler.php

@@ -65,6 +65,12 @@ class BufferHandler extends AbstractHandler
             }
         }
 
+        if ($this->processors) {
+            foreach ($this->processors as $processor) {
+                $record = call_user_func($processor, $record);
+            }
+        }
+
         $this->buffer[] = $record;
         $this->bufferSize++;
 

+ 6 - 0
src/Monolog/Handler/FingersCrossedHandler.php

@@ -69,6 +69,12 @@ class FingersCrossedHandler extends AbstractHandler
      */
     public function handle(array $record)
     {
+        if ($this->processors) {
+            foreach ($this->processors as $processor) {
+                $record = call_user_func($processor, $record);
+            }
+        }
+
         if ($this->buffering) {
             $this->buffer[] = $record;
             if ($this->bufferSize > 0 && count($this->buffer) > $this->bufferSize) {

+ 6 - 0
src/Monolog/Handler/GroupHandler.php

@@ -55,6 +55,12 @@ class GroupHandler extends AbstractHandler
      */
     public function handle(array $record)
     {
+        if ($this->processors) {
+            foreach ($this->processors as $processor) {
+                $record = call_user_func($processor, $record);
+            }
+        }
+
         foreach ($this->handlers as $handler) {
             $handler->handle($record);
         }

+ 19 - 0
tests/Monolog/Handler/BufferHandlerTest.php

@@ -127,4 +127,23 @@ class BufferHandlerTest extends TestCase
         $this->assertTrue($test->hasDebugRecords());
         $this->assertFalse($test->hasWarningRecords());
     }
+
+    /**
+     * @covers Monolog\Handler\BufferHandler::handle
+     */
+    public function testHandleUsesProcessors()
+    {
+        $test = new TestHandler();
+        $handler = new BufferHandler($test);
+        $handler->pushProcessor(function ($record) {
+            $record['extra']['foo'] = true;
+
+            return $record;
+        });
+        $handler->handle($this->getRecord(Logger::WARNING));
+        $handler->flush();
+        $this->assertTrue($test->hasWarningRecords());
+        $records = $test->getRecords();
+        $this->assertTrue($records[0]['extra']['foo']);
+    }
 }

+ 18 - 0
tests/Monolog/Handler/FingersCrossedHandlerTest.php

@@ -148,4 +148,22 @@ class FingersCrossedHandlerTest extends TestCase
         $this->assertTrue($test->hasDebugRecords());
         $this->assertTrue($test->hasWarningRecords());
     }
+
+    /**
+     * @covers Monolog\Handler\FingersCrossedHandler::handle
+     */
+    public function testHandleUsesProcessors()
+    {
+        $test = new TestHandler();
+        $handler = new FingersCrossedHandler($test, Logger::INFO);
+        $handler->pushProcessor(function ($record) {
+            $record['extra']['foo'] = true;
+
+            return $record;
+        });
+        $handler->handle($this->getRecord(Logger::WARNING));
+        $this->assertTrue($test->hasWarningRecords());
+        $records = $test->getRecords();
+        $this->assertTrue($records[0]['extra']['foo']);
+    }
 }

+ 18 - 0
tests/Monolog/Handler/GroupHandlerTest.php

@@ -68,4 +68,22 @@ class GroupHandlerTest extends TestCase
         $this->assertTrue($handler->isHandling($this->getRecord(Logger::WARNING)));
         $this->assertFalse($handler->isHandling($this->getRecord(Logger::DEBUG)));
     }
+
+    /**
+     * @covers Monolog\Handler\GroupHandler::handle
+     */
+    public function testHandleUsesProcessors()
+    {
+        $test = new TestHandler();
+        $handler = new GroupHandler(array($test));
+        $handler->pushProcessor(function ($record) {
+            $record['extra']['foo'] = true;
+
+            return $record;
+        });
+        $handler->handle($this->getRecord(Logger::WARNING));
+        $this->assertTrue($test->hasWarningRecords());
+        $records = $test->getRecords();
+        $this->assertTrue($records[0]['extra']['foo']);
+    }
 }