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:
@@ -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
|
||||
|
@@ -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);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user