Всем привет.
Продолжаем познавать нововведения нового ядра продукта.
На этот раз - это подключение собственного обработчика ошибок для всего продукта.
За обработку ошибок отвечает блок 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, которая отправляет данные мне на компьютер, на специальный скрипт. Как итог, на экране я вижу возникающие ошибки.
