1
0
mirror of https://github.com/Seldaek/monolog.git synced 2025-08-05 20:57:36 +02:00

added level to introspection processor

This commit is contained in:
Kris Wallsmith
2013-09-26 12:52:23 -07:00
parent 8af986b161
commit 0f5cdb285a
2 changed files with 72 additions and 0 deletions

View File

@@ -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

View File

@@ -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);
}
}