beta/bx.logger

PSR-3 logger for Bitrix app

Installs: 972

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 2

Forks: 1

Open Issues: 0

Type:bitrix-module

2.0.1 2023-10-10 15:57 UTC

This package is auto-updated.

Last update: 2025-03-10 19:23:33 UTC


README

В модуле есть 3 обертки над API Битрикс:

  • FileLogger - является оберкткой AddMessage2Log, соотвественно путь сохранения логов определяется константой LOG_FILENAME
  • JournalLogger - записывает логи в журнал событий /bitrix/admin/event_log.php?lang=ru, аргумент $context может содержать несколько важных параметов, соотвествующих полям таблицы
  • DebugLogger - является отберткой над методами Bitrix\Main\Diag\Debug::dumpToFile и Bitrix\Main\Diag\Debug::writeToFile

Так же есть реализация с простой записью файла SimpleTextLogger - в конструкторе определяется, формат даты/времени и формат сообщения.

В модуле задана абстракция более высокого уровня LoggerManagerInterface, позволяет задать несколько логеров под разные уровни + методы для логирования исключений и объекта с результатом Bitrix\Main\Result

Пример использования:

use Bx\Logger\LoggerManager;
use Bx\Logger\SimpleTextLogger;
use Bx\Logger\JournalLogger;
use Bx\Logger\FileLogger;
use Psr\Log\LogLevel;

$simpleTextLogger = new SimpleTextLogger(
    $_SERVER['DOCUMENT_ROOT'].'/log/ation_'.date('Y-m-d').'.log',   // путь сохранения лога
    'Y/m/d H:i:s',                                                  // формат даты/времени
    "{date} {level}:\t{message}"                                    // формат сообщения
)
$loggerManager = new LoggerManager($simpleTextLogger);              // создаем новый менеджер с логером по-умолчанию и типом default

$journalLogger = new JournalLogger('my.module');
$loggerManager->setLogger($journalLogger, LogLevel::ERROR);         // логи с ошибками будут записаны в журнал событий битрикса

$fileLogger = new FileLogger();
$loggerManager->setLogger($fileLogger, LogLevel::WARNING);          // логи с предупреждениями будут записаны в лог LOG_FILENAME

$loggerManager->info('Some info message');                          // сообщение будет записано через логгер SimpleTextLogger
$loggerManager->error('Some error message', [                       // сообщение будет записано в журнал событий
    'ITEM_ID' => 1,
]);
$loggerManager->warning('Some warning message');                    // сообщение будет записано в файл LOG_FILENAME

// создаем новый менеджер с логером по-умолчанию и типом test
$loggerManager = new LoggerManager(\Bx\Logger\TypedLoggerFactory::createTypedLogger($simpleTextLogger, 'test'));