0, LogLevel::INFO => 1, LogLevel::NOTICE => 2, LogLevel::WARNING => 3, LogLevel::ERROR => 4, LogLevel::CRITICAL => 5, LogLevel::ALERT => 6, LogLevel::EMERGENCY => 7, ]; private string $channel; private ?string $minLevel; private ?LoggerInterface $forwardTo; /** * @param string $channel log channel name. * @param string|null $minLevel Minimum PSR-3 level below which messages are ignored. * @param LoggerInterface|null $forwardTo Other logger to forward to. */ public function __construct( string $channel, ?string $minLevel = null, ?LoggerInterface $forwardTo = null ) { Assert::parameter( $minLevel === null || isset( self::LEVELS[$minLevel] ), '$minLevel', 'must be a valid, lowercase PSR-3 log level' ); $this->channel = $channel; $this->minLevel = $minLevel; $this->forwardTo = $forwardTo; } /** * @inheritDoc */ public function log( $level, $message, array $context = [] ): void { if ( !$this->minLevel || self::LEVELS[$level] >= self::LEVELS[$this->minLevel] ) { fwrite( STDERR, "[$level] " . LegacyLogger::format( $this->channel, $message, $context ) ); } if ( $this->forwardTo ) { $this->forwardTo->log( $level, $message, $context ); } } }