From 0f5cdb285aa9030715c193aa13058d8520c68024 Mon Sep 17 00:00:00 2001 From: Kris Wallsmith Date: Thu, 26 Sep 2013 12:52:23 -0700 Subject: [PATCH] added level to introspection processor --- .../Processor/IntrospectionProcessor.php | 14 +++++ .../Processor/IntrospectionProcessorTest.php | 58 +++++++++++++++++++ 2 files changed, 72 insertions(+) diff --git a/src/Monolog/Processor/IntrospectionProcessor.php b/src/Monolog/Processor/IntrospectionProcessor.php index b126218e..a7de5d8d 100644 --- a/src/Monolog/Processor/IntrospectionProcessor.php +++ b/src/Monolog/Processor/IntrospectionProcessor.php @@ -11,6 +11,8 @@ namespace Monolog\Processor; +use Monolog\Logger; + /** * Injects line/file:class/function where the log message came from * @@ -24,12 +26,24 @@ namespace Monolog\Processor; */ class IntrospectionProcessor { + private $level; + + public function __construct($level = Logger::DEBUG) + { + $this->level = $level; + } + /** * @param array $record * @return array */ public function __invoke(array $record) { + // return if the level is not high enough + if ($record['level'] < $this->level) { + return $record; + } + $trace = debug_backtrace(); // skip first since it's always the current method diff --git a/tests/Monolog/Processor/IntrospectionProcessorTest.php b/tests/Monolog/Processor/IntrospectionProcessorTest.php index be9cb580..0dd411d7 100644 --- a/tests/Monolog/Processor/IntrospectionProcessorTest.php +++ b/tests/Monolog/Processor/IntrospectionProcessorTest.php @@ -26,6 +26,7 @@ function tester($handler, $record) namespace Monolog\Processor; +use Monolog\Logger; use Monolog\TestCase; use Monolog\Handler\TestHandler; @@ -62,4 +63,61 @@ class IntrospectionProcessorTest extends TestCase $this->assertEquals(null, $record['extra']['class']); $this->assertEquals('Acme\tester', $record['extra']['function']); } + + public function testLevelTooLow() + { + $input = array( + 'level' => Logger::DEBUG, + 'extra' => array(), + ); + + $expected = $input; + + $processor = new IntrospectionProcessor(Logger::CRITICAL); + $actual = $processor($input); + + $this->assertEquals($expected, $actual); + } + + public function testLevelEqual() + { + $input = array( + 'level' => Logger::CRITICAL, + 'extra' => array(), + ); + + $expected = $input; + $expected['extra'] = array( + 'file' => null, + 'line' => null, + 'class' => 'ReflectionMethod', + 'function' => 'invokeArgs', + ); + + $processor = new IntrospectionProcessor(Logger::CRITICAL); + $actual = $processor($input); + + $this->assertEquals($expected, $actual); + } + + public function testLevelHigher() + { + $input = array( + 'level' => Logger::EMERGENCY, + 'extra' => array(), + ); + + $expected = $input; + $expected['extra'] = array( + 'file' => null, + 'line' => null, + 'class' => 'ReflectionMethod', + 'function' => 'invokeArgs', + ); + + $processor = new IntrospectionProcessor(Logger::CRITICAL); + $actual = $processor($input); + + $this->assertEquals($expected, $actual); + } }