diff --git a/src/Monolog/Handler/BufferHandler.php b/src/Monolog/Handler/BufferHandler.php index c241c32f..7b5ebbbe 100644 --- a/src/Monolog/Handler/BufferHandler.php +++ b/src/Monolog/Handler/BufferHandler.php @@ -162,4 +162,9 @@ class BufferHandler extends AbstractHandler implements ProcessableHandlerInterfa throw new \UnexpectedValueException('The nested handler of type '.\get_class($this->handler).' does not support formatters.'); } + + public function setHandler(HandlerInterface $handler) + { + $this->handler = $handler; + } } diff --git a/tests/Monolog/Handler/BufferHandlerTest.php b/tests/Monolog/Handler/BufferHandlerTest.php index d36a2713..3f1bfb68 100644 --- a/tests/Monolog/Handler/BufferHandlerTest.php +++ b/tests/Monolog/Handler/BufferHandlerTest.php @@ -155,4 +155,24 @@ class BufferHandlerTest extends TestCase $records = $test->getRecords(); $this->assertTrue($records[0]['extra']['foo']); } + + public function testSetHandler() + { + $testOriginal = new TestHandler(); + $handler = new BufferHandler($testOriginal); + $handler->handle($this->getRecord(Level::Info)); + + $testNew = new TestHandler(); + $handler->setHandler($testNew); + + $handler->handle($this->getRecord(Level::Debug)); + + $handler->close(); + + $this->assertFalse($testOriginal->hasInfoRecords()); + $this->assertFalse($testOriginal->hasDebugRecords()); + $this->assertTrue($testNew->hasInfoRecords()); + $this->assertTrue($testNew->hasDebugRecords()); + $this->assertCount(2, $testNew->getRecords()); + } }