• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/lib/diag/logger.php
  • Класс: BitrixMainDiagLogger
  • Вызов: Logger::create
static function create(string $id, $params = [])
{
	$loggersConfig = ConfigConfiguration::getValue('loggers');

	$logger = null;

	if (isset($loggersConfig[$id]))
	{
		$config = $loggersConfig[$id];

		if (isset($config['className']))
		{
			$class = $config['className'];

			$args = $config['constructorParams'] ?? [];
			if ($args instanceof Closure)
			{
				$args = $args();
			}

			$logger = new $class(...array_values($args));
		}
		elseif (isset($config['constructor']))
		{
			$closure = $config['constructor'];
			if ($closure instanceof Closure)
			{
				$logger = $closure(...array_values($params));
			}
		}

		if ($logger instanceof static)
		{
			if (isset($config['level']))
			{
				$logger->setLevel($config['level']);
			}

			if (isset($config['formatter']))
			{
				$serviceLocator = DIServiceLocator::getInstance();
				if ($serviceLocator->has($config['formatter']))
				{
					$logger->setFormatter($serviceLocator->get($config['formatter']));
				}
			}
		}
	}

	return $logger;
}