Блог Горошко Андрея 1C-Битрикс Отладка и Логирование в Битрикс: Инструменты разработчика

Отладка и Логирование в Битрикс: Инструменты разработчика

Средний рейтинг
Еще нет оценок

Ни один разработчик не может обойтись без инструментов отладки. В Битрикс есть несколько способов посмотреть, что происходит «под капотом», от самых простых до продвинутых.

1. «Золотое правило»: print_r только для админа

Самый быстрый способ посмотреть содержимое переменной — это print_r или var_dump. Но выводить их всем пользователям — плохая практика. Всегда оборачивайте отладочный вывод в проверку на права администратора.codePHP

global $USER;
if ($USER->IsAdmin()) {
    echo "<pre>";
    print_r($arResult);
    echo "</pre>";
}

Этот код покажет содержимое $arResult только вам и не сломает верстку для обычных посетителей.

2. Профессиональное логирование: Debug::writeToFile (D7)

Когда print_r не подходит (например, при отладке AJAX-запросов, агентов или событий), на помощь приходит логирование в файл. В D7 для этого есть класс \Bitrix\Main\Diag\Debug.

Синтаксис: \Bitrix\Main\Diag\Debug::writeToFile($variable, «Заголовок», «путь_к_файлу.log»);

Файл будет создан относительно корня сайта. Если указать только имя файла, он появится в корне.codePHP

use Bitrix\Main\Diag\Debug;

$dataToLog = ['key1' => 'value1', 'key2' => [1,2,3]];

// Запишет содержимое $dataToLog в файл /my_log.log
Debug::writeToFile($dataToLog, "Мои данные", "my_log.log");

Преимущества:

  • Не ломает вывод страницы (JSON, HTML и т.д.).
  • Работает в любом контексте (cron, ajax, rest).
  • Форматирует вывод для лучшей читаемости.

3. Старый способ логирования: AddMessage2Log()

Это аналог Debug::writeToFile из старого API.

Синтаксис: AddMessage2Log(print_r($variable, true), «ID_модуля»);

Логи по умолчанию пишутся в файл /bitrix/modules/main/admin/event_log.php, если не настроено иное.codePHP

$dataToLog = ['key1' => 'value1', 'key2' => [1,2,3]];

AddMessage2Log(print_r($dataToLog, true), "my_debug");

4. Просмотр SQL-запросов

Часто проблема кроется в неверно составленном запросе к БД. Битрикс позволяет увидеть все SQL-запросы, которые выполняются на странице.

  1. Откройте файл /bitrix/.settings.php.
  2. Найдите секцию connections -> default.
  3. Добавьте или измените ключ ‘debug’ => true.

codePHP

// /bitrix/.settings.php
'connections' =>
  array (
    'value' =>
    array (
      'default' =>
      array (
        'host' => 'localhost',
        'database' => 'bs_db',
        'login' => 'bs_user',
        'password' => '...',
        'className' => '\\Bitrix\\Main\\DB\\MysqliConnection',
        'debug' => true, // <-- ВОТ ЭТА СТРОКА
      ),
    ),
    'readonly' => true,
  ),

Теперь внизу каждой страницы (в административной панели отладки) появится вкладка «SQL Запросы», где будет полный список запросов, время их выполнения и трассировка вызова.

5. Настройка вывода ошибок (Exception Handling)

Для режима разработки полезно видеть ошибки и исключения прямо на экране. Это также настраивается в .settings.php.

  1. Откройте файл /bitrix/.settings.php.
  2. Найдите или добавьте секцию exception_handling.

codePHP

// /bitrix/.settings.php
'exception_handling' =>
  array (
    'value' =>
    array (
      'debug' => true, // Включаем режим отладки
      'handled_errors_types' => E_ALL & ~E_NOTICE & ~E_STRICT & ~E_USER_NOTICE,
      'exception_errors_types' => E_ALL & ~E_NOTICE & ~E_STRICT & ~E_USER_NOTICE,
      'ignore_silence' => false,
      'assertion_throws_exception' => true,
      'assertion_error_type' => 256,
      'log' => null, // Можно настроить логирование
    ),
    'readonly' => false,
  ),

Главный ключ здесь — ‘debug’ => true. Он заменяет стандартный экран «Произошла ошибка» на детальный отчет об исключении со стеком вызовов. Важно: на боевом сайте этот режим должен быть выключен (‘debug’ => false).

Вывод:
Грамотная отладка экономит часы работы. Используйте IsAdmin() для быстрых проверок, Debug::writeToFile для фоновых процессов, и не забывайте про возможности файла .settings.php для анализа SQL-запросов и детального вывода ошибок на этапе разработки.

отладка Битрикс, логирование, Debug::writeToFile, AddMessage2Log, SQL-запросы, .settings.php, exception_handling, debug.

Мой рейтинг:

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

Related Post

Многосайтовость в Битрикс: Как разделить контент и шаблоныМногосайтовость в Битрикс: Как разделить контент и шаблоны

Средний рейтинг Еще нет оценок Многосайтовость — одна из ключевых «фишек» Битрикс. Она позволяет управлять неограниченным количеством сайтов (с разными доменами, шаблонами и контентом) из одной административной панели на базе

Локализация в Битрикс: Правильная работа с языковыми файлами (GetMessage и Loc::getMessage)Локализация в Битрикс: Правильная работа с языковыми файлами (GetMessage и Loc::getMessage)

Средний рейтинг Еще нет оценок Жестко «зашивать» текстовые строки (заголовки, названия кнопок, сообщения) прямо в код — плохая практика. Это затрудняет перевод сайта на другие языки и усложняет поддержку. В

 Ядро D7: Application, Context и Request — современная работа с окружением Ядро D7: Application, Context и Request — современная работа с окружением

Средний рейтинг Еще нет оценок В старом ядре Битрикс для доступа к данным окружения использовались глобальные переменные ($APPLICATION, $_SERVER, $_POST, $_SESSION). Этот подход затрудняет тестирование и понимание кода. В ядре D7 введены специальные