config = $config; $this->factory = $factory; $this->debug = (bool) $config->get('system', 'debugging') ?? false; $this->logLevel = (string) $config->get('system', 'loglevel') ?? LogLevel::NOTICE; $this->profiling = (bool) $config->get('system', 'profiling') ?? false; } public function changeLogChannel(string $logChannel): void { self::$logChannel = $logChannel; self::$logger = null; } /** * (Creates and) Returns the logger instance */ public function getLogger(): LoggerInterface { if (self::$logger === null) { self::$logger = $this->createLogger(); } return self::$logger; } private function createLogger(): LoggerInterface { // Always create NullLogger if debug is disabled if ($this->debug === false) { $logger = new NullLogger(); } else { $logger = $this->factory->createLogger($this->logLevel, self::$logChannel); } if ($this->profiling === true) { $profiler = new Profiler($this->config); $logger = new ProfilerLogger($logger, $profiler); } // Decorate Logger as WorkerLogger for BC if (self::$logChannel === LogChannel::WORKER) { $logger = new WorkerLogger($logger); } return $logger; } }