diff --git a/CHANGELOG.mdown b/CHANGELOG.mdown index f6398661..007740fc 100644 --- a/CHANGELOG.mdown +++ b/CHANGELOG.mdown @@ -1,3 +1,10 @@ +* 1.0.3 (2012--) + + Changes: + + * Added Monolog\Logger::isHandling() to check if a handler will + handle the given log level + * 1.0.2 (2011-10-24) Changes: diff --git a/src/Monolog/Logger.php b/src/Monolog/Logger.php index 618c9523..267bdd21 100644 --- a/src/Monolog/Logger.php +++ b/src/Monolog/Logger.php @@ -278,6 +278,33 @@ class Logger return self::$levels[$level]; } + /** + * Checks whether the Logger as a handler that listens on the given level + * + * @param integer $level + * @return Boolean + */ + public function isHandling($level) + { + $record = array( + 'message' => '', + 'context' => array(), + 'level' => $level, + 'level_name' => self::getLevelName($level), + 'channel' => $this->name, + 'datetime' => new \DateTime(), + 'extra' => array(), + ); + + foreach ($this->handlers as $key => $handler) { + if ($handler->isHandling($record)) { + return true; + } + } + + return false; + } + // ZF Logger Compat /** diff --git a/tests/Monolog/LoggerTest.php b/tests/Monolog/LoggerTest.php index 6e687dc7..403913b3 100644 --- a/tests/Monolog/LoggerTest.php +++ b/tests/Monolog/LoggerTest.php @@ -289,6 +289,32 @@ class LoggerTest extends \PHPUnit_Framework_TestCase $logger->debug('test'); } + /** + * @covers Monolog\Logger::isHandling + */ + public function testIsHandling() + { + $logger = new Logger(__METHOD__); + + $handler1 = $this->getMock('Monolog\Handler\HandlerInterface'); + $handler1->expects($this->any()) + ->method('isHandling') + ->will($this->returnValue(false)) + ; + + $logger->pushHandler($handler1); + $this->assertFalse($logger->isHandling(Logger::DEBUG)); + + $handler2 = $this->getMock('Monolog\Handler\HandlerInterface'); + $handler2->expects($this->any()) + ->method('isHandling') + ->will($this->returnValue(true)) + ; + + $logger->pushHandler($handler2); + $this->assertTrue($logger->isHandling(Logger::DEBUG)); + } + /** * @dataProvider logMethodProvider * @covers Monolog\Logger::addDebug