From: Bryan Davis Date: Mon, 20 Feb 2017 19:13:30 +0000 (-0700) Subject: MWExceptionHandler::handleError: Set log severity based on error level X-Git-Tag: 1.31.0-rc.0~4045^2 X-Git-Url: https://git.cyclocoop.org/%242?a=commitdiff_plain;h=4f08bb3be9e387897e94cc912776fe835db67b00;p=lhc%2Fweb%2Fwiklou.git MWExceptionHandler::handleError: Set log severity based on error level Bug: T45086 Change-Id: I240b75f5a4e0075c7a357609aa26834708f93b0b --- diff --git a/includes/exception/MWExceptionHandler.php b/includes/exception/MWExceptionHandler.php index bef379eeda..44ab0e46fb 100644 --- a/includes/exception/MWExceptionHandler.php +++ b/includes/exception/MWExceptionHandler.php @@ -20,6 +20,7 @@ use MediaWiki\Logger\LoggerFactory; use MediaWiki\MediaWikiServices; +use Psr\Log\LogLevel; /** * Handler class for MWExceptions @@ -174,31 +175,37 @@ class MWExceptionHandler { switch ( $level ) { case E_RECOVERABLE_ERROR: $levelName = 'Error'; + $severity = LogLevel::ERROR; break; case E_WARNING: case E_CORE_WARNING: case E_COMPILE_WARNING: case E_USER_WARNING: $levelName = 'Warning'; + $severity = LogLevel::WARNING; break; case E_NOTICE: case E_USER_NOTICE: $levelName = 'Notice'; + $severity = LogLevel::INFO; break; case E_STRICT: $levelName = 'Strict Standards'; + $severity = LogLevel::DEBUG; break; case E_DEPRECATED: case E_USER_DEPRECATED: $levelName = 'Deprecated'; + $severity = LogLevel::INFO; break; default: $levelName = 'Unknown error'; + $severity = LogLevel::ERROR; break; } $e = new ErrorException( "PHP $levelName: $message", 0, $level, $file, $line ); - self::logError( $e, 'error' ); + self::logError( $e, 'error', $severity ); // This handler is for logging only. Return false will instruct PHP // to continue regular handling. @@ -621,8 +628,11 @@ TXT; * @since 1.25 * @param ErrorException $e * @param string $channel + * @param string $level */ - protected static function logError( ErrorException $e, $channel ) { + protected static function logError( + ErrorException $e, $channel, $level = LogLevel::ERROR + ) { $catcher = self::CAUGHT_BY_HANDLER; // The set_error_handler callback is independent from error_reporting. // Filter out unwanted errors manually (e.g. when @@ -630,7 +640,8 @@ TXT; $suppressed = ( error_reporting() & $e->getSeverity() ) === 0; if ( !$suppressed ) { $logger = LoggerFactory::getInstance( $channel ); - $logger->error( + $logger->log( + $level, self::getLogMessage( $e ), self::getLogContext( $e, $catcher ) ); @@ -640,7 +651,7 @@ TXT; $json = self::jsonSerializeException( $e, false, FormatJson::ALL_OK, $catcher ); if ( $json !== false ) { $logger = LoggerFactory::getInstance( "{$channel}-json" ); - $logger->error( $json, [ 'private' => true ] ); + $logger->log( $level, $json, [ 'private' => true ] ); } Hooks::run( 'LogException', [ $e, $suppressed ] );