Define a default Monolog logger if inexistant
authorSeb35 <seb35@seb35.fr>
Tue, 12 Jun 2018 10:43:35 +0000 (12:43 +0200)
committerBryanDavis <bdavis@wikimedia.org>
Thu, 4 Apr 2019 04:03:45 +0000 (04:03 +0000)
In the array 'loggers' the key '@default' is assumed to be present,
hence be sure it is defined: this is the system default for MediaWiki,
it can be overwritten if desired.

This default php://stderr with level ERROR is inspired from Monolog’s
own default, which is php://stderr with level DEBUG: this is similar
but less violent for the average MediaWiki sysadmin.

Bug: T196906
Change-Id: Id74083fc20ddf906c40e6d149095e8ade4c68572

includes/debug/logger/MonologSpi.php

index ff653ab..d67696a 100644 (file)
@@ -22,6 +22,7 @@ namespace MediaWiki\Logger;
 
 use MediaWiki\Logger\Monolog\BufferHandler;
 use Monolog\Logger;
+use Monolog\Handler\StreamHandler;
 use Wikimedia\ObjectFactory;
 
 /**
@@ -147,6 +148,17 @@ class MonologSpi implements Spi {
                                $this->config[$key] = $value;
                        }
                }
+               if ( !isset( $this->config['loggers']['@default'] ) ) {
+                       $this->config['loggers']['@default'] = [
+                               'handlers' => [ '@default' ],
+                       ];
+                       if ( !isset( $this->config['handlers']['@default'] ) ) {
+                               $this->config['handlers']['@default'] = [
+                                       'class' => StreamHandler::class,
+                                       'args' => [ 'php://stderr', Logger::ERROR ],
+                               ];
+                       }
+               }
                $this->reset();
        }