Логирование событий в журнал событий

Реклама

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

int
CEventLog::Add(
 array fields
)

 

Параметр Описание
fields Поля добавляемого события. Значения:

  • SEVERITY — степень важности записи. Доступны значения: SECURITY, ERROR, INFO, DEBUG или WARNING, для иного система установит UNKNOWN.
  • AUDIT_TYPE_ID — собственный ID типа события.
  • MODULE_ID — модуль, с которого происходит запись в лог.
  • ITEM_ID — ID объекта, в связи с которым происходит добавление (пользователь, элемент ИБ, ID сообщения, …)
  • REMOTE_ADDR — IP, с которого обратились.
  • USER_AGENT — браузер.
  • REQUEST_URI — URL страницы.
  • SITE_ID — ID сайта, к которому относится добавляемое событие.
  • USER_ID — ID пользователя.
  • GUEST_ID — ID пользователя из модуля статистики
  • DESCRIPTION — собственно описание записи лога, или техническая информация.

С версии 15.5.9 переданные в метод ключи массива: REMOTE_ADDR, USER_AGENT, REQUEST_URI, USER_ID, GUEST_ID будут переопределены, поэтому передавать их не имеет смысла.

Примеры использования

<?
CEventLog::Add(array(
         "SEVERITY" => "SECURITY",
         "AUDIT_TYPE_ID" => "MY_OWN_TYPE",
         "MODULE_ID" => "main",
         "ITEM_ID" => 123,
         "DESCRIPTION" => "Какое-то описание",
      ));
?>

Логика отработки метода:

<?
<?php // /bitrix/modules/main/classes/general/event_log.phpCEventLog::Add() // 31: public static function Add($arFields) { global $USER, $DB; static $arSeverity = array( "SECURITY" => self::SEVERITY_SECURITY,
            "ERROR" => self::SEVERITY_ERROR,
            "WARNING" => self::SEVERITY_WARNING,
            "INFO" => self::SEVERITY_INFO,
            "DEBUG" => self::SEVERITY_DEBUG,
        );

        $url = preg_replace("/(&?sessid=[0-9a-z]+)/", "", $_SERVER["REQUEST_URI"]);
        $SITE_ID = defined("ADMIN_SECTION") && ADMIN_SECTION==true ? false : SITE_ID;

        $arFields = array(
            "SEVERITY" => array_key_exists($arFields["SEVERITY"], $arSeverity)? $arFields["SEVERITY"]: "UNKNOWN",
            "AUDIT_TYPE_ID" => strlen($arFields["AUDIT_TYPE_ID"]) <= 0? "UNKNOWN": $arFields["AUDIT_TYPE_ID"], "MODULE_ID" => strlen($arFields["MODULE_ID"]) <= 0? "UNKNOWN": $arFields["MODULE_ID"], "ITEM_ID" => strlen($arFields["ITEM_ID"]) <= 0? "UNKNOWN": $arFields["ITEM_ID"], "REMOTE_ADDR" => $_SERVER["REMOTE_ADDR"],
            "USER_AGENT" => $_SERVER["HTTP_USER_AGENT"],
            "REQUEST_URI" => $url,
            "SITE_ID" => strlen($arFields["SITE_ID"]) <= 0 ? $SITE_ID : $arFields["SITE_ID"], "USER_ID" => is_object($USER) && ($USER->GetID() > 0)? $USER->GetID(): false,
            "GUEST_ID" => (isset($_SESSION) && array_key_exists("SESS_GUEST_ID", $_SESSION) && $_SESSION["SESS_GUEST_ID"] > 0? $_SESSION["SESS_GUEST_ID"]: false),
            "DESCRIPTION" => $arFields["DESCRIPTION"],
            "~TIMESTAMP_X" => $DB->GetNowFunction(),
        );

        return $DB->Add("b_event_log", $arFields, array("DESCRIPTION"), "", false, "", array("ignore_dml"=>true));
    }
?>

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *