Блог Горошко Андрея 1C-Битрикс Логирование по стандарту PSR-3: Класс Bitrix\Main\Diag\Logger

Логирование по стандарту PSR-3: Класс Bitrix\Main\Diag\Logger

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

В последних версиях ядра Битрикс внедрил поддержку стандарта 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

  1. Уровни: Вы можете писать debug логи в коде, но в .settings.php выставить уровень error, и отладочная информация не будет засорять боевой лог.
  2. Контекст: Массив данных [‘user_id’ => 1] передается отдельно от сообщения, что позволяет лог-процессорам (например, ELK stack) индексировать эти поля.
  3. Плейсхолдеры: Можно использовать {name} в сообщении, и они заменятся значениями из контекста.

Вывод:
Bitrix\Main\Diag\Logger — это современный профессиональный инструмент.

Используйте его для всех новых разработок, чтобы иметь полный контроль над тем, что, куда и когда пишется в журналы событий.

Bitrix Logger, PSR-3, логирование D7, запись логов, FileLogger, контекст лога, форматирование логов.

Мой рейтинг:

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

Related Post

Система событий в Битрикс: AddEventHandler и современный EventManager из D7Система событий в Битрикс: AddEventHandler и современный EventManager из D7

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

Манипуляции с URL в D7: Класс Bitrix\Main\Web\Uri (добавление, удаление параметров, парсинг)Манипуляции с URL в D7: Класс Bitrix\Main\Web\Uri (добавление, удаление параметров, парсинг)

Средний рейтинг Еще нет оценок Работа с URL — рутинная задача: добавить GET-параметр, удалить «мусор», получить домен. В старом ядре использовались функции вроде $APPLICATION->GetCurPageParam. В D7 появился специализированный класс \Bitrix\Main\Web\Uri, который делает

Обновление количества товара на складе в BitrixОбновление количества товара на складе в Bitrix

Средний рейтинг Еще нет оценок Обновление количества товара на складе в Bitrix можно сделать так В коде ниже происходит следующее: Мой рейтинг: