четверг, 15 августа 2013 г.

Битрикс. Класс CEventLog: что мы про него знаем.

Отсутствие документации на некоторые полезные классы немного удивляет. Учитывая, что этот класс упоминается даже на сертифицированных курсах junior, которые я сейчас прохожу - это вообще странно.
Сегодня я роюсь в реализации класса CEventLog.

Собственно говоря, если залезть в код, то мы увидим, что  класс небольшой и содержит всего 4 функции, одна из которых - алиас.

Add($arFields)

Функция принимает на вход массив $arFields с параметрами .
SEVERITY - на данный момент там только один парамент SECURITY, во всех остальных случаях туда проставляется UNKNOWN
AUDIT_TYPE_ID - айди нашего типа, который мы будем добавлять, например EVENT_ACTIONS_ENDED; если оставить строку пустой, то проставится UNKNOWN. можете прописывать сюда практически чего хотите
MODULE_ID - модуль, из которого происходит запись; при пустом значении также проставится UNKNOWN
ITEM_ID - айдишка объекта, в связи с которым добавляется событие; иначе ставится UNKNOWN
SITE_ID - айдишка сайта
DESCRIPTION - описание записи, техническая информация

также функция записывает следующую информацию:
REMOTE_ADDR, USER_AGENT, REQUEST_URI - соответствующая инфа из $_SERVER
USER_ID - из переменной $USER
GUEST_ID - информация из сессии

Например, добавим в журнал событий сообщение о том, что закончилось действие акции с айди 123.
CEventLog::Add(array(
         "SEVERITY" => "SECURITY",
         "AUDIT_TYPE_ID" => "EVENT_ACTIONS_ENDED",
         "MODULE_ID" => "main",
         "ITEM_ID" => 123,
         "DESCRIPTION" => "Закончилось действие акции",
      ));
С этой функцией я имела дело, работает и вполне выполняет чего от неё хотят.

Log($SEVERITY, $AUDIT_TYPE_ID, $MODULE_ID, $ITEM_ID, $DESCRIPTION = false, $SITE_ID = false)

Функция принимаем на вход параметры, с которыми она вызовет функцию Add. Больше она ничего не делает =)

CleanUpAgent()

Это функция агента, которая вызывает очищение базы от протухших записей (да, у записей есть время жизни). Если залезем в список агентов, то увидим, что CleanUpAgent выполняется раз в сутки.

GetList($arOrder = array("ID" => "DESC"), $arFilter = array(), $arNavParams = false)

Как же без неё, родимой.
Сортировать можно по полям ID и TIMESTAMP_X
Фильтровать можно по полям, которые описаны в функции Add.
Навигационные параметры, говоря языком документации, - это массив ключей, принимаемых методом CDBResult::NavQuery (также не задокументированным) в качестве третьего параметра.
Навскидку от этой функции ничего не добилась, больше времени не было, а надо бы с ней поковыряться =)


Немного полезностей и примеров использования мы можем найти
у Долганина вот тут: Добавляем свой элемент в журнал событий
и вот тут: Невозможность добавления данных в момент генерации ошибки
у Шаромова вот тут: Уведомления об изменениях элементов инфоблоков

2 комментария: