Merge "qunit: Update tests to not assume animations use setTimeout"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Tue, 22 Nov 2016 16:08:55 +0000 (16:08 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Tue, 22 Nov 2016 16:08:55 +0000 (16:08 +0000)
includes/debug/logger/monolog/WikiProcessor.php
includes/exception/MWExceptionRenderer.php

index ad939a0..81e1e14 100644 (file)
@@ -29,6 +29,17 @@ namespace MediaWiki\Logger\Monolog;
  * @copyright © 2013 Bryan Davis and Wikimedia Foundation.
  */
 class WikiProcessor {
+       /** @var array Keys which should not be used in log context */
+       protected $reservedKeys = [
+               // from monolog:src/Monolog/Formatter/LogstashFormatter.php#L71-L88
+               'message', 'channel', 'level', 'type',
+               // from WebProcessor
+               'url', 'ip', 'http_method', 'server', 'referrer',
+               // from WikiProcessor
+               'host', 'wiki', 'reqId', 'mwversion',
+               // from config magic
+               'normalized_message',
+       ];
 
        /**
         * @param array $record
@@ -36,6 +47,15 @@ class WikiProcessor {
         */
        public function __invoke( array $record ) {
                global $wgVersion;
+
+               // some log aggregators such as Logstash will merge the log context into the main
+               // metadata and end up overwriting the data coming from processors
+               foreach ( $this->reservedKeys as $key ) {
+                       if ( isset( $record['context'][$key] ) ) {
+                               wfLogWarning( __METHOD__ . ": '$key' key overwritten in log context." );
+                       }
+               }
+
                $record['extra'] = array_merge(
                        $record['extra'],
                        [
@@ -47,5 +67,4 @@ class WikiProcessor {
                );
                return $record;
        }
-
 }
index c0f1e84..b600f42 100644 (file)
@@ -60,7 +60,9 @@ class MWExceptionRenderer {
                                                        MWExceptionHandler::getLogMessage( $eNew ) .
                                                "\nBacktrace:\n" . MWExceptionHandler::getRedactedTraceAsString( $eNew );
                                } else {
-                                       $message .= "Exception caught inside exception handler.\n\n" .
+                                       $message .= 'Original exception: ' .
+                                               MWExceptionHandler::getPublicLogMessage( $e );
+                                       $message .= "\n\nException caught inside exception handler.\n\n" .
                                                self::getShowBacktraceError( $e );
                                }
                                $message .= "\n";