В статье собраны «рецепты» — готовые инструкции с примерами кода — для вывода истории из журнала событий Bitrix на сайте. Все рецепты можно варьировать и дополнять по своему усмотрению.

Рецепт 1. Быстрый просмотр через админ-панель
Ингредиенты:
- Доступ к административной части сайта.
- Разрешения на просмотр журнала событий.
Приготовление:
- Перейдите в админ-панель, чаще всего по адресу:
http://ваш_сайт/bitrix/admin/
. - Откройте раздел «Настройки» → «Инструменты» → «Журнал событий» (или «Настройки» → «Журнал событий» в зависимости от версии).
- Просмотрите события (например, авторизацию пользователей, изменения контента и т. д.) прямо через встроенный интерфейс. Здесь можно быстро оценить актуальное состояние, не трогая публичную часть.
Комментарий шефа: Это самый простой способ «пробовать» журнал событий, но он не подходит, если нужно вывести логи прямо на пользовательской странице сайта.
Рецепт 2. Вывод журнала на публичной странице с помощью CEventLog
Если требуется отобразить логи непосредственно в интерфейсе сайта, используйте специальный класс CEventLog
. Он позволяет настраивать фильтры, сортировку и многое другое.
Шаг 2.1: Базовая структура файла
Создайте, к примеру, файл /logs/index.php
(или любую другую страницу) и добавьте следующий код:
<?php
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
// Устанавливаем заголовок (не обязательно, но полезно)
global $APPLICATION;
$APPLICATION->SetTitle("Журнал событий (пример)");
// Подключаем класс
use Bitrix\Main\Loader;
Loader::includeModule("main");
// Параметры сортировки
$arOrder = ["ID" => "DESC"];
// Параметры фильтра
$arFilter = [
// Пример фильтрации по типу события
"AUDIT_TYPE_ID" => "USER_AUTHORIZE",
// Пример фильтрации по дате, начиная с 1 января 2025
">=TIMESTAMP_X" => "01.01.2025",
];
// Нет группировки и произвольные настройки пагинации
$arGroupBy = false;
$arNavStartParams = [
"nPageSize" => 10, // Количество записей на странице
"bShowAll" => false
];
// Получаем объекты из журнала
$rsLogs = CEventLog::GetList($arOrder, $arFilter, $arGroupBy, $arNavStartParams);
// Выводим результат
while ($arLog = $rsLogs->Fetch()) {
echo "<div style='border:1px solid #ccc; margin-bottom:10px; padding:10px;'>";
echo "<strong>Дата:</strong> " . $arLog["TIMESTAMP_X"] . "<br>";
echo "<strong>Пользователь:</strong> " . $arLog["USER_ID"] . "<br>";
echo "<strong>Тип события:</strong> " . $arLog["AUDIT_TYPE_ID"] . "<br>";
echo "<strong>Описание:</strong> " . $arLog["DESCRIPTION"];
echo "</div>";
}
require_once($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/epilog_after.php');
?>
Комментарий шефа:
- В фильтре можно менять параметры — так вы легко показываете логи только определенного типа или за конкретный период.
- Если нужно, чтобы на странице был вывод всех типов событий, удалите или скорректируйте
AUDIT_TYPE_ID
в фильтре. - Дата в фильтре может быть заменена на динамическое значение (например, прошлый месяц).
Шаг 2.2: Расширенный пример с несколькими типами событий
Чтобы отобразить сразу несколько типов аудита (например, авторизация и выход пользователя), можно использовать конструкцию:
$arFilter = [
"AUDIT_TYPE_ID" => [
"USER_AUTHORIZE",
"USER_LOGOUT"
],
];
Так вы увидите в одном месте все лог-записи, связанные с входами и выходами пользователей.
Шаг 2.3: Пагинация и навигация
Для удобного листания используйте встроенные методы навигации:
<?php
// ...
$arNavStartParams = ["nPageSize" => 5];
$rsLogs = CEventLog::GetList($arOrder, $arFilter, false, $arNavStartParams);
// Выводим
while ($arLog = $rsLogs->Fetch()) {
echo "<p>Запись ID: " . $arLog["ID"] . " | Дата: " . $arLog["TIMESTAMP_X"] . "</p>";
}
// Теперь выводим ссылки для перехода по страницам
echo $rsLogs->NavPrint("События");
?>
Комментарий шефа:
$rsLogs->NavPrint("События")
выведет стандартный блок с номерами страниц.- Строка «События» — это текст, который будет выведен рядом с навигационными ссылками.
Рецепт 3. Компонент для повторного использования
Если планируется гибкая верстка или многократное применение функционала, лучше создать собственный компонент. Структура может быть такой:
- Создайте каталог компонента:
local/components/my/eventlog/
- Внутри него — файл
component.php
с логикой работы: - Файл шаблона
template.php
(внутриtemplates/.default/
): - Подключите компонент в любой странице сайта (или в шаблоне):
<?php
if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();
use Bitrix\Main\Loader;
Loader::includeModule("main");
$arOrder = ["ID" => "DESC"];
$arFilter = [
"AUDIT_TYPE_ID" => "USER_AUTHORIZE"
];
$arNavStartParams = [
"nPageSize" => 10
];
$rsLogs = CEventLog::GetList($arOrder, $arFilter, false, $arNavStartParams);
$arResult = [];
while($arLog = $rsLogs->Fetch()) {
$arResult[] = $arLog;
}
// Подготавливаем данные для вывода
$this->arResult = $arResult;
// Подключаем шаблон
$this->includeComponentTemplate();
?>
<?php if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die(); ?>
<h2>Журнал событий (пример компонента)</h2>
<?php foreach($arResult as $logItem): ?>
<div>
<strong>Дата:</strong> <?= $logItem["TIMESTAMP_X"] ?><br>
<strong>Описание:</strong> <?= $logItem["DESCRIPTION"] ?><br>
</div>
<hr>
<?php endforeach; ?>
<?$APPLICATION->IncludeComponent(
"my:eventlog",
"",
[]
);?>
Комментарий шефа:
- Такой подход удобен, если нужно гибко кастомизировать верстку и логику, а также повторно использовать компонент на разных страницах.
- Можно передавать в компонент параметры фильтра, заголовки, количество записей и т. д., чтобы универсализировать его.
Рецепт 4. Фильтрация и безопасность
Вывод журнала событий на публичной части потенциально несет риск утечки конфиденциальной информации. Поэтому:
- Проверяйте права доступа: кто может просматривать эти логи?
- Используйте
if (!$USER->IsAdmin()) { LocalRedirect('/'); }
или настраивайте группы пользователей с соответствующими правами.
- Используйте
- Ограничивайте количество данных:
- Не всегда нужно показывать полный лог (особенно если он содержит чувствительные данные). Применяйте фильтры по датам и типам событий.
- Производительность:
- При большом объеме записей ограничивайте вывод (параметр
nPageSize
) и/или используйте дополнительные условия.
- При большом объеме записей ограничивайте вывод (параметр
Итог
- Рецепт 1: Быстро просмотреть логи через админ-панель.
- Рецепт 2: Создать публичную страницу, в которой с помощью
CEventLog::GetList
получаются и выводятся нужные данные. - Рецепт 3: Организовать вывод логов через собственный компонент — наиболее гибкий вариант для постоянного использования.
- Рецепт 4: Не забывать про безопасность, права доступа и фильтрацию.
С этими рецептами вы без труда сможете отобразить историю из «Журнала событий» 1С-Битрикс на своем сайте, обеспечив при этом удобство просмотра и сохранность конфиденциальных данных.
Пример кода с прологом и эпилогом (для публичной страницы)
Чтобы закрепить материал, вот базовый пример целостного файла с корректным подключением пролога и эпилога:
<?php
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
/* Ваш код здесь */
use Bitrix\Main\Loader;
Loader::includeModule("main");
$arOrder = ["ID" => "DESC"];
$arFilter = ["AUDIT_TYPE_ID" => "USER_AUTHORIZE"];
$arNavStartParams = ["nPageSize" => 10];
$rsLogs = CEventLog::GetList($arOrder, $arFilter, false, $arNavStartParams);
while ($arLog = $rsLogs->Fetch()) {
echo "<p>[" . $arLog["ID"] . "] " . $arLog["TIMESTAMP_X"] . " — " . $arLog["DESCRIPTION"] . "</p>";
}
require_once($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/epilog_after.php');
?>
Готово! Теперь вы знаете несколько способов вывести логи и сможете легко адаптировать решения под ваши задачи в Bitrix. Приятной разработки!