wiki.techinc.nl/includes/debug/logger/ConsoleSpi.php
Timo Tijhof 9cb8bb611b debug: Improve docs, fix ingroup tags, clean up tests
* Remove redundant file-level description and ensure the class desc
  and ingroup tag are on the class block instead.
  Ref https://gerrit.wikimedia.org/r/q/owner:Krinkle+message:ingroup

* Widen `@covers` annotations in unit tests.
  Ref https://gerrit.wikimedia.org/r/q/owner:krinkle+is:merged+message:covers

* Create "Debug" documentation group, covering the debug/ directory.
  This will show up on doc.wikimedia.org under "Modules", where
  each class is listed, and the class page will also link back to
  the group as part of its breadcrumb navigation.

  Test with `php maintenance/mwdocgen.php --file docs/,includes/debug/`
  and then view /w/docs/html/

* Improve docs of various classes and explain relationships better.
  In particular, reformat to ensure each class has a oneline
  description that captures its essential function.

Change-Id: I5d1143a9244b7fd888e1dc31f0fd7965272aa900
2023-10-05 11:54:30 +00:00

44 lines
1.2 KiB
PHP

<?php
namespace MediaWiki\Logger;
use Psr\Log\NullLogger;
/**
* 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
*/
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();
}
}
}