Полный цикл в digital

Журнал событий в Битрикс, добавление своего события

В системе управления Bitrix, для отладки и поиска ошибок, есть специализированный раздел Журнал событий, который находится по пути Настройки → Инструменты → Журнал событий:

В журнале событий, можно просмотреть события сайта, какие именно события записывать, можно определить самостоятельно. Это можно сделать в настройках главного модуля на вкладке Журнал событий:

В журнале событий доступна возможность настройки оповещений о наступлении событий на сайте.

Добавляем свое событие в журнал событий

Иногда бывает нужным в журнал событий добавить какое-то свое событие и настроить на него оповещение. Для примера давайте настроим свое собственное событие, когда будут возникать PHP ошибки.

Создадим файл с классом унаследованным от ExceptionHandlerLog и подключим его в систему, тем методом который используется на сайте:

exceptionhandler.php<?php

namespace Hmarketing\Main\Helpers\Log;

use Bitrix\Main\Diag\ExceptionHandlerFormatter;

class ExceptionHandler extends \Bitrix\Main\Diag\ExceptionHandlerLog
{
    // обязательный абстракный метод от абстрактного класса ExceptionHandlerLog
    public function write($exception, $logType): void
    {
        // добавляем событие
        $text = ExceptionHandlerFormatter::format($exception);
        \CEventLog::Add(array(
            'SEVERITY' => 'ERROR',
            'AUDIT_TYPE_ID' => 'EXCEPTION_HANDLING_TYPE',
            'MODULE_ID' => '',
            'DESCRIPTION' => $text,
        ));
    }

    // обязательный абстракный метод от абстрактного класса ExceptionHandlerLog
    public function initialize(array $options)
    {

    }

    // метод который будем дергать при наступлении события OnEventLogGetAuditTypes, по сути это просто переопределяет название события в админке Битрикс
    public static function OnEventLogGetAuditTypes (): array
    {
        return array(
            'EXCEPTION_HANDLING_TYPE' => '[EXCEPTION_HANDLING_TYPE] Ошибка PHP'
        );
    }

}

Внесем правки в файл .settings.php, в разделе exception_handling нужно прописать наш класс в разделе log:

bitrix/.settings.php'exception_handling' =>
array(
    'value' =>
        array(
            'debug' => true,
            'handled_errors_types' => 4437,
            'exception_errors_types' => 4437,
            'ignore_silence' => true,
            'assertion_throws_exception' => true,
            'assertion_error_type' => 256,
            'log' => array(
                'class_name' => '\Hmarketing\Main\Helpers\Log\ExceptionHandler',
            ),
        ),
    'readonly' => false,
)

Добавляем обработчик событий для изменения названия события в админке сайта:

local/php_interface/init.phpAddEventHandler('main', 'OnEventLogGetAuditTypes', 'phpError');
function phpError()
{
    return Hmarketing\Main\Helpers\Log\ExceptionHandler::OnEventLogGetAuditTypes();
}

Как добавляется событие

Добавить событие из любого кода на сайте довольно просто:

<?
CEventLog::Add(array(
 "SEVERITY" => "SECURITY",
 "AUDIT_TYPE_ID" => "MY_OWN_TYPE",
 "MODULE_ID" => "main",
 "ITEM_ID" => 123,
 "DESCRIPTION" => "Какое-то описание",
));
  • SEVERITY принимать единственное значение, SECURITY, для иного система переиначит на UNKNOWN
  • AUDIT_TYPE_ID ваш собственный ID типа
  • MODULE_ID модуль, с которого происходит запись в лог, скорее для информации
  • ITEM_ID ID объекта, в связи с которым происходит добавление
  • DESCRIPTION собственно описание записи лога, или техническая информация

Выполнение кода даст нам вот эту картинку:

Колонку Событие, мы можем исправить. Берем и добавляем данный обработчик:

local/php_interface/init.phpAddEventHandler('main', 'OnEventLogGetAuditTypes', 'ASD_OnEventLogGetAuditTypes');
function ASD_OnEventLogGetAuditTypes()
{
   return array('MY_OWN_TYPE' => '[MY_OWN_TYPE] Мой собственный тип');
}

Получаем такую картину:

Заполните форму уже сегодня!
Для начала сотрудничества необходимо заполнить заявку или заказать обратный звонок. В ответ получите коммерческое предложение, которое будет содержать индивидуальную стратегию с учетом требований и поставленных задач
Работаем по будням с 9:00 до 18:00. Заявки, отправленные в выходные, обрабатываем в первый рабочий день до 12:00.
Спасибо, ваш запрос принят и будет обработан!
Эйч Маркетинг