From 8af986b161d89878caa9a371d431bec0530dfe83 Mon Sep 17 00:00:00 2001 From: Kris Wallsmith Date: Thu, 26 Sep 2013 12:43:13 -0700 Subject: [PATCH 1/2] moved stubs up so line numbers don't change --- .../Processor/IntrospectionProcessorTest.php | 34 +++++++++---------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/tests/Monolog/Processor/IntrospectionProcessorTest.php b/tests/Monolog/Processor/IntrospectionProcessorTest.php index 9adbe174..be9cb580 100644 --- a/tests/Monolog/Processor/IntrospectionProcessorTest.php +++ b/tests/Monolog/Processor/IntrospectionProcessorTest.php @@ -9,6 +9,21 @@ * file that was distributed with this source code. */ +namespace Acme; + +class Tester +{ + public function test($handler, $record) + { + $handler->handle($record); + } +} + +function tester($handler, $record) +{ + $handler->handle($record); +} + namespace Monolog\Processor; use Monolog\TestCase; @@ -32,7 +47,7 @@ class IntrospectionProcessorTest extends TestCase $tester->test($handler, $this->getRecord()); list($record) = $handler->getRecords(); $this->assertEquals(__FILE__, $record['extra']['file']); - $this->assertEquals(58, $record['extra']['line']); + $this->assertEquals(18, $record['extra']['line']); $this->assertEquals('Acme\Tester', $record['extra']['class']); $this->assertEquals('test', $record['extra']['function']); } @@ -43,23 +58,8 @@ class IntrospectionProcessorTest extends TestCase \Acme\tester($handler, $this->getRecord()); list($record) = $handler->getRecords(); $this->assertEquals(__FILE__, $record['extra']['file']); - $this->assertEquals(64, $record['extra']['line']); + $this->assertEquals(24, $record['extra']['line']); $this->assertEquals(null, $record['extra']['class']); $this->assertEquals('Acme\tester', $record['extra']['function']); } } - -namespace Acme; - -class Tester -{ - public function test($handler, $record) - { - $handler->handle($record); - } -} - -function tester($handler, $record) -{ - $handler->handle($record); -} From 0f5cdb285aa9030715c193aa13058d8520c68024 Mon Sep 17 00:00:00 2001 From: Kris Wallsmith Date: Thu, 26 Sep 2013 12:52:23 -0700 Subject: [PATCH 2/2] 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); + } }