Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 7
0.00% covered (danger)
0.00%
0 / 2
CRAP
0.00% covered (danger)
0.00%
0 / 1
ConsoleSpi
0.00% covered (danger)
0.00%
0 / 7
0.00% covered (danger)
0.00%
0 / 2
42
0.00% covered (danger)
0.00%
0 / 1
 __construct
0.00% covered (danger)
0.00%
0 / 3
0.00% covered (danger)
0.00%
0 / 1
2
 getLogger
0.00% covered (danger)
0.00%
0 / 4
0.00% covered (danger)
0.00%
0 / 1
30
1<?php
2
3namespace MediaWiki\Logger;
4
5use Psr\Log\NullLogger;
6
7/**
8 * ConsoleLogger service provider for MediaWiki\Logger\LoggerFactory.
9 *
10 * This is developed for use in maintenance/eval.php.
11 *
12 * @internal For use in MediaWiki core only
13 * @since 1.30
14 * @ingroup Debug
15 */
16class ConsoleSpi implements Spi {
17
18    /** @var string[]|null Channel allow-list: channel name => minimum level */
19    private ?array $channels;
20
21    private ?Spi $forwardTo;
22
23    /**
24     * @param array $config
25     *   - channels: (string[]) List of channels to log: channel name => minimum level.
26     *     Omit to log everything.
27     *   - forwardTo: (Spi) Forward all log messages to this SPI (regardless of whether
28     *     ConsoleSpi logs them).
29     */
30    public function __construct( array $config = [] ) {
31        $this->channels = $config['channels'] ?? null;
32        $this->forwardTo = $config['forwardTo'] ?? null;
33    }
34
35    /** @inheritDoc */
36    public function getLogger( $channel ) {
37        if ( !$this->channels || isset( $this->channels[$channel] ) ) {
38            return new ConsoleLogger( $channel, $this->channels[$channel] ?? null,
39                $this->forwardTo ? $this->forwardTo->getLogger( $channel ) : null );
40        } else {
41            return $this->forwardTo ? $this->forwardTo->getLogger( $channel ) : new NullLogger();
42        }
43    }
44}