@ArrayPop

Что означает расширение php в контексте логов bitrix?

5ffae4dde8a35493508761.png
Вот за скринил это в документации по файлу .settings.php
Речь идет о кастомизации вывода ошибок в логи. Все там понятно кроме пункта extension. Какие там могут быть расширения, есть пример какой ни будь MyLogExt?
  • Вопрос задан
  • 72 просмотра
Решения вопроса 2
Судя по исходникам, это поле используется только в проверке extension_loaded() и больше нигде - если указать незагруженное расширение, то логирование будет отключено.
При этом дальше идёт проверка class_exists(), которая делает предыдущую проверку излишней.
То есть речь идёт именно про расширение PHP, но оно по сути никак не используется. Видимо, предполагалось, что будут писать свои нативные расширения для более эффективного логирования и, возможно, что такое расширение даже будет поставляться с Битриксом. Но я вообще не уверен, что в кастомном расширении можно унаследовать требуемый класс ExceptionHandlerLog из ядра Битрикса.

Код
public function createExceptionHandlerLog()
{
    $exceptionHandling = Config\Configuration::getValue("exception_handling");
    if ($exceptionHandling === null || !is_array($exceptionHandling) || !isset($exceptionHandling["log"]) || !is_array($exceptionHandling["log"]))
        return null;

    $options = $exceptionHandling["log"];

    $log = null;

    if (isset($options["class_name"]) && !empty($options["class_name"]))
    {
        if (isset($options["extension"]) && !empty($options["extension"]) && !extension_loaded($options["extension"]))
            return null;

        if (isset($options["required_file"]) && !empty($options["required_file"]) && ($requiredFile = Loader::getLocal($options["required_file"])) !== false)
            require_once($requiredFile);

        $className = $options["class_name"];
        if (!class_exists($className))
            return null;

        $log = new $className();
    }
    elseif (isset($options["settings"]) && is_array($options["settings"]))
    {
        $log = new Diag\FileExceptionHandlerLog();
    }
    else
    {
        return null;
    }

    $log->initialize(
        isset($options["settings"]) && is_array($options["settings"]) ? $options["settings"] : array()
    );

    return $log;
}
Ответ написан
babarun
@babarun Куратор тега 1С-Битрикс
Безумный план моих идей в руках больных людей
Просто проверка что данное расширение загружено (как для встроенных расширений, так и для динамически загруженных, т.е. загруженных как через php.ini, так и через dl() )
См. bitrix/modules/main/lib/application.php
if (isset($options["extension"]) && !empty($options["extension"]) && !extension_loaded($options["extension"]))
				return null;
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы