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
Requires (Dev)
- squizlabs/php_codesniffer: ^3.6
- vimeo/psalm: ^4.22
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'));