Всем привет.
Продолжаем познавать нововведения нового ядра продукта.
На этот раз - это подключение собственного обработчика ошибок для всего продукта.
За обработку ошибок отвечает блок exception_handling в файле настроек /bitrix/.settings.php
В данном блоке есть параметр log, в котором можно добавить опции:
в данном случае, уже указаны мои тестовые значения.
По названию, я думаю, понятно, что за что отвечает.
Двигаем далее. Мы указали подключение файла modules/mylog.module/lib/log.php, его и создадим.
Как видно, класс тот, что указан в конфигурационном файле. Данный класс должен быть унаследован от \Bitrix\Main\Diag\ExceptionHandlerLog
Обязательных 2 функции initialize и write.
Собственно первая вызывается для инициализации, а вторая для обработки ошибки.
В функции инициализации у меня просто заполняется переменная, значение для которой передается из .settings.php
В функции записи производится подготовка текста ошибок для отправки.
Затем вызывается SendError, которая отправляет данные мне на компьютер, на специальный скрипт. Как итог, на экране я вижу возникающие ошибки.

Продолжаем познавать нововведения нового ядра продукта.
На этот раз - это подключение собственного обработчика ошибок для всего продукта.
За обработку ошибок отвечает блок exception_handling в файле настроек /bitrix/.settings.php
В данном блоке есть параметр log, в котором можно добавить опции:
'class_name' => 'MyTest', 'extension' => '', 'required_file' => 'modules/mylog.module/lib/log.php', |
По названию, я думаю, понятно, что за что отвечает.
Двигаем далее. Мы указали подключение файла modules/mylog.module/lib/log.php, его и создадим.
<?php class MyTest extends \Bitrix\Main\Diag\ExceptionHandlerLog { private $URL; public function initialize(array $options) { $this->URL = $options["send_url"]; } public function write(\Exception $exception, $logType) { $title = \Bitrix\Main\Diag\ExceptionHandlerFormatter::severityToString($exception->getSeverity()); $text = $exception->getMessage(); $text .= "\n".$exception->getFile()."[".$exception->getLine()."]"; $this->SendError($title,$text); } protected function SendError($title,$text) { $data = array('name' => $title, 'text' => $text); $sock = new CHTTP(); $sock->Post($this->URL,$data); } } |
Обязательных 2 функции initialize и write.
Собственно первая вызывается для инициализации, а вторая для обработки ошибки.
В функции инициализации у меня просто заполняется переменная, значение для которой передается из .settings.php
В функции записи производится подготовка текста ошибок для отправки.
Затем вызывается SendError, которая отправляет данные мне на компьютер, на специальный скрипт. Как итог, на экране я вижу возникающие ошибки.
