2017-04-27 23:56:38 +00:00
|
|
|
<?php
|
2019-05-28 14:04:23 +00:00
|
|
|
|
2017-04-27 23:56:38 +00:00
|
|
|
namespace MediaWiki\Logger;
|
|
|
|
|
|
2023-02-08 02:02:27 +00:00
|
|
|
use Psr\Log\NullLogger;
|
|
|
|
|
|
|
|
|
|
/**
|
2023-10-05 04:55:31 +00:00
|
|
|
* ConsoleLogger service provider for MediaWiki\Logger\LoggerFactory.
|
|
|
|
|
*
|
|
|
|
|
* This is developed for use in maintenance/eval.php.
|
|
|
|
|
*
|
|
|
|
|
* @internal For use in MediaWiki core only
|
|
|
|
|
* @since 1.30
|
|
|
|
|
* @ingroup Debug
|
2023-02-08 02:02:27 +00:00
|
|
|
*/
|
2017-04-27 23:56:38 +00:00
|
|
|
class ConsoleSpi implements Spi {
|
2023-02-08 02:02:27 +00:00
|
|
|
|
|
|
|
|
/** @var string[]|null Channel allow-list: channel name => minimum level */
|
|
|
|
|
private ?array $channels;
|
|
|
|
|
|
|
|
|
|
private ?Spi $forwardTo;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @param array $config
|
|
|
|
|
* - channels: (string[]) List of channels to log: channel name => minimum level.
|
|
|
|
|
* Omit to log everything.
|
|
|
|
|
* - forwardTo: (Spi) Forward all log messages to this SPI (regardless of whether
|
2023-10-05 04:55:31 +00:00
|
|
|
* ConsoleSpi logs them).
|
2023-02-08 02:02:27 +00:00
|
|
|
*/
|
|
|
|
|
public function __construct( array $config = [] ) {
|
|
|
|
|
$this->channels = $config['channels'] ?? null;
|
|
|
|
|
$this->forwardTo = $config['forwardTo'] ?? null;
|
2017-04-27 23:56:38 +00:00
|
|
|
}
|
|
|
|
|
|
2023-02-08 02:02:27 +00:00
|
|
|
/** @inheritDoc */
|
2017-04-27 23:56:38 +00:00
|
|
|
public function getLogger( $channel ) {
|
2023-02-08 02:02:27 +00:00
|
|
|
if ( !$this->channels || isset( $this->channels[$channel] ) ) {
|
|
|
|
|
return new ConsoleLogger( $channel, $this->channels[$channel] ?? null,
|
|
|
|
|
$this->forwardTo ? $this->forwardTo->getLogger( $channel ) : null );
|
|
|
|
|
} else {
|
|
|
|
|
return $this->forwardTo ? $this->forwardTo->getLogger( $channel ) : new NullLogger();
|
|
|
|
|
}
|
2017-04-27 23:56:38 +00:00
|
|
|
}
|
|
|
|
|
}
|