mirror of
https://github.com/Seldaek/monolog.git
synced 2025-08-11 07:34:12 +02:00
Fixed passing Closure as parameter to minMaxHandler.
This commit is contained in:
@@ -12,7 +12,7 @@ use Monolog\Logger;
|
|||||||
class MinMaxHandler extends AbstractHandler
|
class MinMaxHandler extends AbstractHandler
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Handler or factory callable($record, $fingersCrossedHandler)
|
* Handler or factory callable($record, $this)
|
||||||
*
|
*
|
||||||
* @var callable|\Monolog\Handler\HandlerInterface
|
* @var callable|\Monolog\Handler\HandlerInterface
|
||||||
*/
|
*/
|
||||||
@@ -37,12 +37,10 @@ class MinMaxHandler extends AbstractHandler
|
|||||||
protected $bubble;
|
protected $bubble;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param callable|HandlerInterface $handler Handler or factory callable($record, $fingersCrossedHandler).
|
* @param callable|HandlerInterface $handler Handler or factory callable($record, $this).
|
||||||
* @param int $minLevel
|
* @param int $minLevel Minimum level for logs that are passes to handler
|
||||||
* @param int $maxLevel
|
* @param int $maxLevel Maximum level for logs that are passes to handler
|
||||||
* @param Boolean $bubble Whether the messages that are handled can bubble up the stack or not
|
* @param Boolean $bubble Whether the messages that are handled can bubble up the stack or not
|
||||||
*
|
|
||||||
* @internal param \TtLibrary\Log\Handler\Maximum $int log level
|
|
||||||
*/
|
*/
|
||||||
public function __construct($handler, $minLevel = Logger::DEBUG, $maxLevel = Logger::EMERGENCY, $bubble = true)
|
public function __construct($handler, $minLevel = Logger::DEBUG, $maxLevel = Logger::EMERGENCY, $bubble = true)
|
||||||
{
|
{
|
||||||
@@ -70,6 +68,20 @@ class MinMaxHandler extends AbstractHandler
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// The same logic as in FingersCrossedHandler
|
||||||
|
if (!$this->handler instanceof HandlerInterface) {
|
||||||
|
if (!is_callable($this->handler)) {
|
||||||
|
throw new \RuntimeException(
|
||||||
|
"The given handler (" . json_encode($this->handler)
|
||||||
|
. ") is not a callable nor a Monolog\\Handler\\HandlerInterface object"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
$this->handler = call_user_func($this->handler, $record, $this);
|
||||||
|
if (!$this->handler instanceof HandlerInterface) {
|
||||||
|
throw new \RuntimeException("The factory callable should return a HandlerInterface");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ($this->processors) {
|
if ($this->processors) {
|
||||||
foreach ($this->processors as $processor) {
|
foreach ($this->processors as $processor) {
|
||||||
$record = call_user_func($processor, $record);
|
$record = call_user_func($processor, $record);
|
||||||
|
@@ -93,4 +93,35 @@ class MinMaxHandlerTest extends TestCase
|
|||||||
$this->assertFalse($handler->handle($this->getRecord(Logger::INFO)));
|
$this->assertFalse($handler->handle($this->getRecord(Logger::INFO)));
|
||||||
$this->assertFalse($handler->handle($this->getRecord(Logger::WARNING)));
|
$this->assertFalse($handler->handle($this->getRecord(Logger::WARNING)));
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
/**
|
||||||
|
* @covers Monolog\Handler\MinMaxHandler::handle
|
||||||
|
*/
|
||||||
|
public function testHandleWithCallback()
|
||||||
|
{
|
||||||
|
$test = new TestHandler();
|
||||||
|
$handler = new MinMaxHandler(
|
||||||
|
function ($record, $handler) use ($test) {
|
||||||
|
return $test;
|
||||||
|
}, Logger::INFO, Logger::NOTICE, false
|
||||||
|
);
|
||||||
|
$handler->handle($this->getRecord(Logger::DEBUG));
|
||||||
|
$handler->handle($this->getRecord(Logger::INFO));
|
||||||
|
$this->assertFalse($test->hasDebugRecords());
|
||||||
|
$this->assertTrue($test->hasInfoRecords());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @covers Monolog\Handler\MinMaxHandler::handle
|
||||||
|
* @expectedException \RuntimeException
|
||||||
|
*/
|
||||||
|
public function testHandleWithBadCallbackThrowsException()
|
||||||
|
{
|
||||||
|
$handler = new MinMaxHandler(
|
||||||
|
function ($record, $handler) {
|
||||||
|
return 'foo';
|
||||||
|
}
|
||||||
|
);
|
||||||
|
$handler->handle($this->getRecord(Logger::WARNING));
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user