File: ConsoleSpi.php

package info (click to toggle)
mediawiki 1%3A1.43.3%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 417,464 kB
  • sloc: php: 1,062,949; javascript: 664,290; sql: 9,714; python: 5,458; xml: 3,489; sh: 1,131; makefile: 64
file content (44 lines) | stat: -rw-r--r-- 1,251 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<?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();
		}
	}
}