From: Aaron Schulz Date: Fri, 6 Sep 2013 18:52:34 +0000 (-0700) Subject: Fully log exceptions within ResourceLoader (including traces) X-Git-Tag: 1.31.0-rc.0~18739^2 X-Git-Url: https://git.heureux-cyclage.org/?a=commitdiff_plain;h=c28251a9fdc75ff0a25bb7866aa6f440b5524ad8;p=lhc%2Fweb%2Fwiklou.git Fully log exceptions within ResourceLoader (including traces) Change-Id: Icb479c76cd855244429fe65b29667783dcca8f53 --- diff --git a/includes/Exception.php b/includes/Exception.php index dc1208a0d1..e1bfb2dd56 100644 --- a/includes/Exception.php +++ b/includes/Exception.php @@ -247,16 +247,9 @@ class MWException extends Exception { * It will be either HTML or plain text based on isCommandLine(). */ function report() { - global $wgLogExceptionBacktrace, $wgMimeType; - $log = $this->getLogMessage(); + global $wgMimeType; - if ( $log ) { - if ( $wgLogExceptionBacktrace ) { - wfDebugLog( 'exception', $log . "\n" . $this->getTraceAsString() . "\n" ); - } else { - wfDebugLog( 'exception', $log ); - } - } + $this->logException(); if ( defined( 'MW_API' ) ) { // Unhandled API exception, we can't be sure that format printer is alive @@ -273,6 +266,22 @@ class MWException extends Exception { } } + /** + * Log the error message to the exception log (if enabled) + */ + function logException() { + global $wgLogExceptionBacktrace; + + $log = $this->getLogMessage(); + if ( $log ) { + if ( $wgLogExceptionBacktrace ) { + wfDebugLog( 'exception', $log . "\n" . $this->getTraceAsString() . "\n" ); + } else { + wfDebugLog( 'exception', $log ); + } + } + } + /** * Check whether we are in command line mode or not to report the exception * in the correct format. diff --git a/includes/resourceloader/ResourceLoader.php b/includes/resourceloader/ResourceLoader.php index ff3ea35b49..30883705c3 100644 --- a/includes/resourceloader/ResourceLoader.php +++ b/includes/resourceloader/ResourceLoader.php @@ -177,6 +177,7 @@ class ResourceLoader { // Save filtered text to Memcached $cache->set( $key, $result ); } catch ( Exception $exception ) { + $exception->logException(); wfDebugLog( 'resourceloader', __METHOD__ . ": minification failed: $exception" ); $this->hasErrors = true; // Return exception as a comment @@ -474,6 +475,7 @@ class ResourceLoader { try { $this->preloadModuleInfo( array_keys( $modules ), $context ); } catch ( Exception $e ) { + $e->logException(); wfDebugLog( 'resourceloader', __METHOD__ . ": preloading module info failed: $e" ); $this->hasErrors = true; // Add exception to the output as a comment @@ -493,6 +495,7 @@ class ResourceLoader { // Calculate maximum modified time $mtime = max( $mtime, $module->getModifiedTime( $context ) ); } catch ( Exception $e ) { + $e->logException(); wfDebugLog( 'resourceloader', __METHOD__ . ": calculating maximum modified time failed: $e" ); $this->hasErrors = true; // Add exception to the output as a comment @@ -727,6 +730,7 @@ class ResourceLoader { try { $blobs = MessageBlobStore::get( $this, $modules, $context->getLanguage() ); } catch ( Exception $e ) { + $e->logException(); wfDebugLog( 'resourceloader', __METHOD__ . ": pre-fetching blobs from MessageBlobStore failed: $e" ); $this->hasErrors = true; // Add exception to the output as a comment @@ -834,6 +838,7 @@ class ResourceLoader { break; } } catch ( Exception $e ) { + $e->logException(); wfDebugLog( 'resourceloader', __METHOD__ . ": generating module package failed: $e" ); $this->hasErrors = true; // Add exception to the output as a comment