mirror of
https://github.com/Seldaek/monolog.git
synced 2025-08-06 13:16:39 +02:00
Merge pull request #238 from kriswallsmith/master
added level support to introspection processor
This commit is contained in:
@@ -11,6 +11,8 @@
|
|||||||
|
|
||||||
namespace Monolog\Processor;
|
namespace Monolog\Processor;
|
||||||
|
|
||||||
|
use Monolog\Logger;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Injects line/file:class/function where the log message came from
|
* Injects line/file:class/function where the log message came from
|
||||||
*
|
*
|
||||||
@@ -24,12 +26,24 @@ namespace Monolog\Processor;
|
|||||||
*/
|
*/
|
||||||
class IntrospectionProcessor
|
class IntrospectionProcessor
|
||||||
{
|
{
|
||||||
|
private $level;
|
||||||
|
|
||||||
|
public function __construct($level = Logger::DEBUG)
|
||||||
|
{
|
||||||
|
$this->level = $level;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param array $record
|
* @param array $record
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
public function __invoke(array $record)
|
public function __invoke(array $record)
|
||||||
{
|
{
|
||||||
|
// return if the level is not high enough
|
||||||
|
if ($record['level'] < $this->level) {
|
||||||
|
return $record;
|
||||||
|
}
|
||||||
|
|
||||||
$trace = debug_backtrace();
|
$trace = debug_backtrace();
|
||||||
|
|
||||||
// skip first since it's always the current method
|
// skip first since it's always the current method
|
||||||
|
@@ -9,8 +9,24 @@
|
|||||||
* file that was distributed with this source code.
|
* 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;
|
namespace Monolog\Processor;
|
||||||
|
|
||||||
|
use Monolog\Logger;
|
||||||
use Monolog\TestCase;
|
use Monolog\TestCase;
|
||||||
use Monolog\Handler\TestHandler;
|
use Monolog\Handler\TestHandler;
|
||||||
|
|
||||||
@@ -32,7 +48,7 @@ class IntrospectionProcessorTest extends TestCase
|
|||||||
$tester->test($handler, $this->getRecord());
|
$tester->test($handler, $this->getRecord());
|
||||||
list($record) = $handler->getRecords();
|
list($record) = $handler->getRecords();
|
||||||
$this->assertEquals(__FILE__, $record['extra']['file']);
|
$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('Acme\Tester', $record['extra']['class']);
|
||||||
$this->assertEquals('test', $record['extra']['function']);
|
$this->assertEquals('test', $record['extra']['function']);
|
||||||
}
|
}
|
||||||
@@ -43,23 +59,65 @@ class IntrospectionProcessorTest extends TestCase
|
|||||||
\Acme\tester($handler, $this->getRecord());
|
\Acme\tester($handler, $this->getRecord());
|
||||||
list($record) = $handler->getRecords();
|
list($record) = $handler->getRecords();
|
||||||
$this->assertEquals(__FILE__, $record['extra']['file']);
|
$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(null, $record['extra']['class']);
|
||||||
$this->assertEquals('Acme\tester', $record['extra']['function']);
|
$this->assertEquals('Acme\tester', $record['extra']['function']);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
namespace Acme;
|
public function testLevelTooLow()
|
||||||
|
|
||||||
class Tester
|
|
||||||
{
|
|
||||||
public function test($handler, $record)
|
|
||||||
{
|
{
|
||||||
$handler->handle($record);
|
$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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function tester($handler, $record)
|
|
||||||
{
|
|
||||||
$handler->handle($record);
|
|
||||||
}
|
|
||||||
|
Reference in New Issue
Block a user