public function handleError($type, $message, $file, $line, array $context, array $backtrace = null) { if ($type === E_USER_WARNING || $type === E_USER_NOTICE) { $handler = defined('PHPBB_MSG_HANDLER') ? PHPBB_MSG_HANDLER : 'msg_handler'; $handler($type, $message, $file, $line); } return parent::handleError($type, $message, $file, $line, $context, $backtrace); }
public function testHandleDeprecation() { $that = $this; $logArgCheck = function ($level, $message, $context) use($that) { $that->assertEquals(LogLevel::INFO, $level); $that->assertArrayHasKey('level', $context); $that->assertEquals(E_RECOVERABLE_ERROR | E_USER_ERROR | E_DEPRECATED | E_USER_DEPRECATED, $context['level']); $that->assertArrayHasKey('stack', $context); }; $logger = $this->getMock('Psr\\Log\\LoggerInterface'); $logger->expects($this->once())->method('log')->will($this->returnCallback($logArgCheck)); $handler = new ErrorHandler(); $handler->setDefaultLogger($logger); @$handler->handleError(E_USER_DEPRECATED, 'Foo deprecation', __FILE__, __LINE__, array()); }
public function testBootstrappingLogger() { $bootLogger = new BufferingLogger(); $handler = new ErrorHandler($bootLogger); $loggers = array(E_DEPRECATED => array($bootLogger, LogLevel::INFO), E_USER_DEPRECATED => array($bootLogger, LogLevel::INFO), E_NOTICE => array($bootLogger, LogLevel::WARNING), E_USER_NOTICE => array($bootLogger, LogLevel::WARNING), E_STRICT => array($bootLogger, LogLevel::WARNING), E_WARNING => array($bootLogger, LogLevel::WARNING), E_USER_WARNING => array($bootLogger, LogLevel::WARNING), E_COMPILE_WARNING => array($bootLogger, LogLevel::WARNING), E_CORE_WARNING => array($bootLogger, LogLevel::WARNING), E_USER_ERROR => array($bootLogger, LogLevel::CRITICAL), E_RECOVERABLE_ERROR => array($bootLogger, LogLevel::CRITICAL), E_COMPILE_ERROR => array($bootLogger, LogLevel::CRITICAL), E_PARSE => array($bootLogger, LogLevel::CRITICAL), E_ERROR => array($bootLogger, LogLevel::CRITICAL), E_CORE_ERROR => array($bootLogger, LogLevel::CRITICAL)); $this->assertSame($loggers, $handler->setLoggers(array())); $handler->handleError(E_DEPRECATED, 'Foo message', __FILE__, 123, array()); $expectedLog = array(LogLevel::INFO, 'Foo message', array('type' => E_DEPRECATED, 'file' => __FILE__, 'line' => 123, 'level' => error_reporting())); $logs = $bootLogger->cleanLogs(); unset($logs[0][2]['stack']); $this->assertSame(array($expectedLog), $logs); $bootLogger->log($expectedLog[0], $expectedLog[1], $expectedLog[2]); $mockLogger = $this->getMock('Psr\\Log\\LoggerInterface'); $mockLogger->expects($this->once())->method('log')->with(LogLevel::WARNING, 'Foo message', $expectedLog[2]); $handler->setLoggers(array(E_DEPRECATED => array($mockLogger, LogLevel::WARNING))); }
public function testBootstrappingLogger() { $bootLogger = new BufferingLogger(); $handler = new ErrorHandler($bootLogger); $loggers = array(E_DEPRECATED => array($bootLogger, LogLevel::INFO), E_USER_DEPRECATED => array($bootLogger, LogLevel::INFO), E_NOTICE => array($bootLogger, LogLevel::WARNING), E_USER_NOTICE => array($bootLogger, LogLevel::WARNING), E_STRICT => array($bootLogger, LogLevel::WARNING), E_WARNING => array($bootLogger, LogLevel::WARNING), E_USER_WARNING => array($bootLogger, LogLevel::WARNING), E_COMPILE_WARNING => array($bootLogger, LogLevel::WARNING), E_CORE_WARNING => array($bootLogger, LogLevel::WARNING), E_USER_ERROR => array($bootLogger, LogLevel::CRITICAL), E_RECOVERABLE_ERROR => array($bootLogger, LogLevel::CRITICAL), E_COMPILE_ERROR => array($bootLogger, LogLevel::CRITICAL), E_PARSE => array($bootLogger, LogLevel::CRITICAL), E_ERROR => array($bootLogger, LogLevel::CRITICAL), E_CORE_ERROR => array($bootLogger, LogLevel::CRITICAL)); $this->assertSame($loggers, $handler->setLoggers(array())); $handler->handleError(E_DEPRECATED, 'Foo message', __FILE__, 123, array()); $logs = $bootLogger->cleanLogs(); $this->assertCount(1, $logs); $log = $logs[0]; $this->assertSame('info', $log[0]); $this->assertSame('Deprecated: Foo message', $log[1]); $this->assertArrayHasKey('exception', $log[2]); $exception = $log[2]['exception']; $this->assertInstanceOf(\ErrorException::class, $exception); $this->assertSame('Deprecated: Foo message', $exception->getMessage()); $this->assertSame(__FILE__, $exception->getFile()); $this->assertSame(123, $exception->getLine()); $this->assertSame(E_DEPRECATED, $exception->getSeverity()); $bootLogger->log(LogLevel::WARNING, 'Foo message', array('exception' => $exception)); $mockLogger = $this->getMock('Psr\\Log\\LoggerInterface'); $mockLogger->expects($this->once())->method('log')->with(LogLevel::WARNING, 'Foo message', array('exception' => $exception)); $handler->setLoggers(array(E_DEPRECATED => array($mockLogger, LogLevel::WARNING))); }