Функция AddMessage2Log — один из ключевых инструментов отладки в экосистеме 1С-Битрикс. Она позволяет разработчикам и администраторам записывать произвольные сообщения в системный журнал событий, что значительно упрощает диагностику проблем, отслеживание выполнения скриптов и анализ работы кастомного кода.
Что такое AddMessage2Log и зачем она нужна?
AddMessage2Log() — встроенная функция 1С-Битрикс для записи отладочной информации в специальный журнал. В отличие от var_dump() или echo, которые выводят данные напрямую в браузер и могут нарушить работу сайта, эта функция сохраняет сообщения в структурированном лог-файле, доступном даже при фатальных ошибках.
Основные применения:
- Отслеживание выполнения сложных алгоритмов
- Логирование значений переменных в критических точках кода
- Диагностика ошибок в пользовательских полях и компонентах
- Мониторинг выполнения агентов и фоновых задач
- Анализ работы API-интеграций со сторонними сервисами
Синтаксис и параметры функции
Базовый синтаксис функции выглядит следующим образом:
AddMessage2Log(
mixed $message, // Сообщение для записи в лог
string $module = "", // Идентификатор модуля (опционально)
int $traceDepth = 6, // Глубина трассировки стека
bool $showArgs = false // Показывать аргументы функций в стеке
);
Параметры подробно:
- $message — может быть строкой, массивом, объектом или любым другим типом данных. Функция автоматически преобразует его в читаемый формат.
- $module — название модуля, к которому относится запись. Если указать "main" или оставить пустым, запись пойдет в общий журнал.
- $traceDepth — определяет, сколько уровней стека вызовов будет отображено (по умолчанию 6).
- $showArgs — если установлено в true, в стеке вызовов будут отображаться аргументы каждой функции.
Практические примеры использования
Пример 1: Базовая запись в лог
<?php
// Простая текстовая запись
AddMessage2Log("Начало выполнения скрипта обработки заказа");
// Запись с указанием модуля
AddMessage2Log("Пользователь ID: " . $USER->GetID(), "sale");
// Логирование массива
$orderData = ["ID" => 15487, "PRICE" => 5400];
AddMessage2Log($orderData, "sale.order");
?>
Пример 2: Отладка выполнения условий
<?php
if ($someCondition) {
AddMessage2Log("Условие выполнено, переменная \$value = " . $value, "custom.module");
// Действия при выполнении условия
} else {
AddMessage2Log("Условие НЕ выполнено, проверяемые данные: ", "custom.module");
AddMessage2Log($_REQUEST, "custom.module"); // Логируем массив REQUEST
}
?>
Пример 3: Логирование работы агента
<?php
function myCustomAgent() {
$startTime = microtime(true);
// Основная логика агента
// ...
$executionTime = microtime(true) - $startTime;
AddMessage2Log("Агент выполнен за " . round($executionTime, 4) . " сек.", "main.agent");
return "myCustomAgent();";
}
?>
Где найти записи AddMessage2Log?
Способ 1: Административный раздел Битрикс
- Перейдите в раздел «Настройки» → «Техническая поддержка» → «Журнал событий»
- В фильтре выберите «Тип события» → «Отладочная информация»
- Для удобства фильтрации укажите название модуля, если вы его использовали
Способ 2: Прямой доступ к файлам логов
Файлы логов хранятся по пути:
/bitrix/modules/[имя_модуля]/log/
Для записей без указания модуля или с модулем "main":
/bitrix/modules/main/log/
Способ 3: Просмотр через консоль (SSH)
# Просмотр последних 100 записей основного лога
tail -n 100 /home/bitrix/www/bitrix/modules/main/log/[дата]_[хэш].log
# Поиск записей по ключевому слову
grep -r "обработка заказа" /home/bitrix/www/bitrix/modules/*/log/
Продвинутые техники и лучшие практики
1. Создание обертки для удобного логирования
<?php
function debugLog($data, $label = "", $module = "custom.debug") {
if (defined("DEBUG_ENABLED") && DEBUG_ENABLED === true) {
$message = $label ? "[$label] " . print_r($data, true) : print_r($data, true);
AddMessage2Log($message, $module, 8, true);
}
}
// Использование
define("DEBUG_ENABLED", true); // Включаем только на тестовом сервере
debugLog($_SESSION, "Текущая сессия пользователя");
debugLog($arResult, "Результат работы компонента", "news.list");
?>
2. Логирование с разными уровнями важности
<?php
class CustomLogger {
const LEVEL_INFO = "INFO";
const LEVEL_ERROR = "ERROR";
const LEVEL_DEBUG = "DEBUG";
public static function log($message, $level = self::LEVEL_INFO, $module = "custom") {
$backtrace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 3);
$caller = isset($backtrace[2]) ? $backtrace[2]['function'] : 'unknown';
$logMessage = sprintf("[%s] %s | %s: %s",
date("Y-m-d H:i:s"),
$level,
$caller,
print_r($message, true)
);
AddMessage2Log($logMessage, $module);
}
}
// Использование
CustomLogger::log("Запуск импорта товаров", CustomLogger::LEVEL_INFO, "catalog.import");
CustomLogger::log($connectionError, CustomLogger::LEVEL_ERROR, "catalog.import");
?>
Частые ошибки и решения
Проблема 1: Записи не появляются в логах
Решение: Проверьте настройки производительности:
- Перейдите в «Настройки» → «Настройки продукта» → «Производительность»
- Убедитесь, что в разделе «Отладочная информация» включен пункт «Записывать отладочную информацию в log-файл»
- Проверьте права на запись в папку /bitrix/modules/*/log/
Проблема 2: Лог-файлы слишком быстро растут
Решение: Настройте автоматическую очистку:
<?php
// Агент для очистки старых логов (добавить в init.php или как отдельный агент)
function clearOldDebugLogs() {
$daysToKeep = 7; // Храним логи 7 дней
$logPath = $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/*/log/";
foreach(glob($logPath) as $moduleDir) {
$logDir = $moduleDir . "log/";
if(is_dir($logDir)) {
$files = glob($logDir . "*.log");
$now = time();
foreach($files as $file) {
if(is_file($file) && ($now - filemtime($file) >= $daysToKeep * 86400)) {
unlink($file);
}
}
}
}
return "clearOldDebugLogs();";
}
?>
Проблема 3: Конфликт имен модулей
Решение: Используйте уникальные идентификаторы модулей:
<?php
// Вместо AddMessage2Log($data, "custom");
// Используйте AddMessage2Log($data, "mycompany.custommodule");
AddMessage2Log("Начало синхронизации", "mycompany.syncservice.v1");
?>
Альтернативные методы отладки
Хотя AddMessage2Log является мощным инструментом, в некоторых случаях могут быть полезны и другие подходы:
- Bitrix Event Log — для критических событий и ошибок
- Монитор производительности — для анализа времени выполнения
- Xdebug или Tideways — для профессионального профилирования
- Логи веб-сервера — для анализа HTTP-запросов
Оптимизация инфраструктуры для работы с логами
Для проектов с интенсивным логированием важно обеспечить соответствующую инфраструктуру. Быстрые SSD-диски значительно ускоряют запись и чтение лог-файлов, особенно при активной отладке. Современные VDS-решения, такие как FirstVDS, предлагают дисковые массивы NVMe, которые обеспечивают скорость записи до 3500 МБ/с — это позволяет вести детальное логирование без влияния на производительность сайта. При переходе с обычного хостинга можно использовать промокод 6481180955 для получения дополнительного дискового пространства под логи и резервные копии.
Правильное использование AddMessage2Log в сочетании с правильно настроенной инфраструктурой позволяет создавать отказоустойчивые и легко отлаживаемые решения на платформе 1С-Битрикс.
Функция AddMessage2Log — один из ключевых инструментов отладки в экосистеме 1С-Битрикс. Она позволяет разработчикам и администраторам записывать произвольные сообщения в системный журнал событий, что значительно упрощает диагностику проблем, отслеживание выполнения скриптов и анализ работы кастомного кода.
Что такое AddMessage2Log и зачем она нужна?
AddMessage2Log() — встроенная функция 1С-Битрикс для записи отладочной информации в специальный журнал. В отличие от var_dump() или echo, которые выводят данные напрямую в браузер и могут нарушить работу сайта, эта функция сохраняет сообщения в структурированном лог-файле, доступном даже при фатальных ошибках.
Основные применения:
Синтаксис и параметры функции
Базовый синтаксис функции выглядит следующим образом:
Параметры подробно:
Практические примеры использования
Пример 1: Базовая запись в лог
Пример 2: Отладка выполнения условий
Пример 3: Логирование работы агента
Где найти записи AddMessage2Log?
Способ 1: Административный раздел Битрикс
Способ 2: Прямой доступ к файлам логов
Файлы логов хранятся по пути:
Для записей без указания модуля или с модулем "main":
Способ 3: Просмотр через консоль (SSH)
Продвинутые техники и лучшие практики
1. Создание обертки для удобного логирования
2. Логирование с разными уровнями важности
Частые ошибки и решения
Проблема 1: Записи не появляются в логах
Решение: Проверьте настройки производительности:
Проблема 2: Лог-файлы слишком быстро растут
Решение: Настройте автоматическую очистку:
Проблема 3: Конфликт имен модулей
Решение: Используйте уникальные идентификаторы модулей:
Альтернативные методы отладки
Хотя AddMessage2Log является мощным инструментом, в некоторых случаях могут быть полезны и другие подходы:
Оптимизация инфраструктуры для работы с логами
Для проектов с интенсивным логированием важно обеспечить соответствующую инфраструктуру. Быстрые SSD-диски значительно ускоряют запись и чтение лог-файлов, особенно при активной отладке. Современные VDS-решения, такие как FirstVDS, предлагают дисковые массивы NVMe, которые обеспечивают скорость записи до 3500 МБ/с — это позволяет вести детальное логирование без влияния на производительность сайта. При переходе с обычного хостинга можно использовать промокод 6481180955 для получения дополнительного дискового пространства под логи и резервные копии.
Правильное использование AddMessage2Log в сочетании с правильно настроенной инфраструктурой позволяет создавать отказоустойчивые и легко отлаживаемые решения на платформе 1С-Битрикс.