[ Index ]

PHP Cross Reference of Joomla 4.2.2 documentation

title

Body

[close]

/libraries/src/Log/ -> LoggerRegistry.php (source)

   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  }


Generated: Wed Sep 7 05:41:13 2022 Chilli.vc Blog - For Webmaster,Blog-Writer,System Admin and Domainer