beta/bx.logger

Bitrix app 的 PSR-3 logger

安装: 754

依赖项: 0

建议者: 0

安全: 0

星标: 0

关注者: 3

分支: 1

开放问题: 0

类型:bitrix-module

2.0.1 2023-10-10 15:57 UTC

This package is auto-updated.

Last update: 2024-09-10 17:57:59 UTC


README

模块中包含3个对Bitrix 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'));