В последних версиях ядра Битрикс внедрил поддержку стандарта PSR-3 для логирования.
Это позволяет использовать унифицированный подход к записи логов, настраивать уровни важности и форматирование.
1. Настройка логгера
Логгеры настраиваются в файле .settings.php.
// /bitrix/.settings.php
'loggers' => [
'value' => [
'main.mail' => [ // Логгер для почты
'className' => '\\Bitrix\\Main\\Diag\\FileLogger',
'constructorParams' => [
'file' => $_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main.mail.log',
],
'level' => 'debug',
],
'my.module' => [ // Наш кастомный логгер
'className' => '\\Bitrix\\Main\\Diag\\FileLogger',
'constructorParams' => [
'file' => $_SERVER['DOCUMENT_ROOT'].'/local/logs/my.module.log',
],
'level' => 'info', // Писать все, начиная с info (info, warning, error...)
],
],
'readonly' => true,
],2. Использование в коде
Получаем логгер по его имени и пишем сообщения.
use Bitrix\Main\Diag\Logger;
$logger = Logger::create('my.module');
if ($logger) {
// Информационное сообщение
$logger->info('Модуль запущен', ['user_id' => 1]);
// Предупреждение
$logger->warning('Память почти заполнена', ['memory' => memory_get_usage()]);
try {
// ... код ...
} catch (\Exception $e) {
// Ошибка с передачей исключения в контекст
$logger->error('Произошел сбой: {message}', [
'message' => $e->getMessage(),
'exception' => $e
]);
}
}Преимущества Logger перед AddMessage2Log
- Уровни: Вы можете писать debug логи в коде, но в .settings.php выставить уровень error, и отладочная информация не будет засорять боевой лог.
- Контекст: Массив данных [‘user_id’ => 1] передается отдельно от сообщения, что позволяет лог-процессорам (например, ELK stack) индексировать эти поля.
- Плейсхолдеры: Можно использовать {name} в сообщении, и они заменятся значениями из контекста.
Вывод:
Bitrix\Main\Diag\Logger — это современный профессиональный инструмент.
Используйте его для всех новых разработок, чтобы иметь полный контроль над тем, что, куда и когда пишется в журналы событий.
Bitrix Logger, PSR-3, логирование D7, запись логов, FileLogger, контекст лога, форматирование логов.