Allow logging arbitrary extra data in MWExceptionHandler::logException
authorGergő Tisza <tgr.huwiki@gmail.com>
Sat, 24 Aug 2019 11:33:38 +0000 (13:33 +0200)
committerGergő Tisza <tgr.huwiki@gmail.com>
Thu, 12 Sep 2019 15:19:07 +0000 (17:19 +0200)
Change-Id: I8215191900fa3a61d6e9c80bbe36c83c8be1710a

includes/exception/MWExceptionHandler.php

index b4e483b..d7c5a85 100644 (file)
@@ -683,16 +683,21 @@ TXT;
         * This method must not assume the exception is an MWException,
         * it is also used to handle PHP exceptions or exceptions from other libraries.
         *
-        * @since 1.22
         * @param Exception|Throwable $e
         * @param string $catcher CAUGHT_BY_* class constant indicating what caught the error
+        * @param array $extraData (since 1.34) Additional data to log
+        * @since 1.22
         */
-       public static function logException( $e, $catcher = self::CAUGHT_BY_OTHER ) {
+       public static function logException( $e, $catcher = self::CAUGHT_BY_OTHER, $extraData = [] ) {
                if ( !( $e instanceof MWException ) || $e->isLoggable() ) {
                        $logger = LoggerFactory::getInstance( 'exception' );
+                       $context = self::getLogContext( $e, $catcher );
+                       if ( $extraData ) {
+                               $context['extraData'] = $extraData;
+                       }
                        $logger->error(
                                self::getLogNormalMessage( $e ),
-                               self::getLogContext( $e, $catcher )
+                               $context
                        );
 
                        $json = self::jsonSerializeException( $e, false, FormatJson::ALL_OK, $catcher );