[ Index ] |
PHP Cross Reference of Joomla 4.2.2 documentation |
[Summary view] [Print] [Text view]
1 <?php 2 3 /** 4 * Joomla! Content Management System 5 * 6 * @copyright (C) 2017 Open Source Matters, Inc. <https://www.joomla.org> 7 * @license GNU General Public License version 2 or later; see LICENSE.txt 8 */ 9 10 namespace Joomla\CMS\Log; 11 12 // phpcs:disable PSR1.Files.SideEffects 13 \defined('JPATH_PLATFORM') or die; 14 // phpcs:enable PSR1.Files.SideEffects 15 16 /** 17 * Service registry for loggers 18 * 19 * @since 4.0.0 20 */ 21 final class LoggerRegistry 22 { 23 /** 24 * Array holding the registered services 25 * 26 * @var string[] 27 * @since 4.0.0 28 */ 29 private $loggerMap = [ 30 'callback' => Logger\CallbackLogger::class, 31 'database' => Logger\DatabaseLogger::class, 32 'echo' => Logger\EchoLogger::class, 33 'formattedtext' => Logger\FormattedtextLogger::class, 34 'messagequeue' => Logger\MessagequeueLogger::class, 35 'syslog' => Logger\SyslogLogger::class, 36 'w3c' => Logger\W3cLogger::class, 37 'inmemory' => Logger\InMemoryLogger::class, 38 ]; 39 40 /** 41 * Get the logger class for a given key 42 * 43 * @param string $key The key to look up 44 * 45 * @return string 46 * 47 * @since 4.0.0 48 * @throws \InvalidArgumentException 49 */ 50 public function getLoggerClass(string $key): string 51 { 52 if (!$this->hasLogger($key)) { 53 throw new \InvalidArgumentException("The '$key' key is not registered."); 54 } 55 56 return $this->loggerMap[$key]; 57 } 58 59 /** 60 * Check if the registry has a logger for the given key 61 * 62 * @param string $key The key to look up 63 * 64 * @return boolean 65 * 66 * @since 4.0.0 67 */ 68 public function hasLogger(string $key): bool 69 { 70 return isset($this->loggerMap[$key]); 71 } 72 73 /** 74 * Register a logger 75 * 76 * @param string $key The service key to be registered 77 * @param string $class The class name of the logger 78 * @param boolean $replace Flag indicating the service key may replace an existing definition 79 * 80 * @return void 81 * 82 * @since 4.0.0 83 */ 84 public function register(string $key, string $class, bool $replace = false) 85 { 86 // If the key exists already and we aren't instructed to replace existing services, bail early 87 if (isset($this->loggerMap[$key]) && !$replace) { 88 throw new \RuntimeException("The '$key' key is already registered."); 89 } 90 91 // The class must exist 92 if (!class_exists($class)) { 93 throw new \RuntimeException("The '$class' class for key '$key' does not exist."); 94 } 95 96 $this->loggerMap[$key] = $class; 97 } 98 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Wed Sep 7 05:41:13 2022 | Chilli.vc Blog - For Webmaster,Blog-Writer,System Admin and Domainer |