wiki.techinc.nl/includes/debug/logger/ConsoleSpi.php
Gergő Tisza 1c53f5902e psysh: Dump selected log channels
* Extend ConsoleLogger to support filtering by log level and
  forwarding to another logger.
* Extend ConsoleSpi to support filtering by channel/level and
  forwarding to another provider.
* Allow configuring which channels shell.php should log to STDERR
  and at what levels.
* Deprecate shell.php -d, use more meaningful parameter names.
* Change logging behavior so that logging to STDERR doesn't
  prevent normal logging, which seemed like confusing behavior
  (either we should always disable normal logging for shell.php
  or never, it shouldn't depend on whether we log to console).
  Keep old behavior for -d, just in case.

Change-Id: I5d29c95995bf83784c96dd40df9c96e22b9ec73e
2023-02-09 11:35:59 +00:00

38 lines
1.1 KiB
PHP

<?php
namespace MediaWiki\Logger;
use Psr\Log\NullLogger;
/**
* Simple logger SPI for logging to STDERR.
*/
class ConsoleSpi implements Spi {
/** @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
* ConsoleSPI logs them).
*/
public function __construct( array $config = [] ) {
$this->channels = $config['channels'] ?? null;
$this->forwardTo = $config['forwardTo'] ?? null;
}
/** @inheritDoc */
public function getLogger( $channel ) {
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();
}
}
}