shef.problems

логи, журнал событий, учёт проблем

Модуль Битрикс24 «коробки» и БУС для логирования и учёта проблем. Подключает Monolog и даёт готовые логгеры: в файл, в журнал событий Битрикса, на экран администратору. Проблемы разложены по типам — общие, синхронизация, товары, продажи, — и у каждой есть ответственный из настроек модуля.

Опирается на shef.options: его нужно поставить первым.

Что нужно для установки

PHP8.2 и выше
Главный модуль Битрикс22.600.300 и выше
Модуль shef.options3.0.0 и выше
Кодировка порталатолько UTF-8
Расширение PHPmbstring

Установка

Порядок шагов важен: сначала shef.options, потом файлы этого модуля, потом установка в административном разделе, и только потом настройки.

Через Composer

composer require bxshef/problems

Модуль развернётся в bitrix/modules/shef.problems/ сам, вместе с ним приедут bxshef/options и monolog/monolog. Composer 2.2+ требует разрешить плагин раскладки — один раз, в composer.json проекта:

{
    "config": {
        "allow-plugins": {
            "composer/installers": true
        }
    }
}

Из архива

Скачайте shef.problems.zip со страницы релизов и распакуйте в bitrix/modules/. Должно получиться bitrix/modules/shef.problems/ — именно через точку. Monolog лежит внутри архива, отдельно его ставить не нужно.

Откуда берётся Monolog

Из двух мест, и оба оставлены сознательно:

  • есть Monolog в Composer проекта — модуль берёт его;
  • нет — модуль подключает свою копию из vendor/.

Решает это модуль сам, при каждой загрузке. Composer проекта Битрикс видит, если путь к composer.json указан в /bitrix/.settings.php, ключ composer.

Дальше — в административном разделе

  1. Настройки → Marketplace → Установленные решения → «SH Учёт проблем» → Установить.
  2. Настройки → Настройки продукта → Настройки модулей → SH Учёт проблем → вкладка «Сотрудники»: кому уходят проблемы каждого типа. Не заполните — всё уйдёт пользователю с ID 1.
  3. Логи пишутся вне корня сайта — на уровень выше него: при корне /home/bitrix/www это /home/bitrix/sh_log. Веб-сервер их не отдаёт, смотреть — через Настройки → Учёт проблем → Логи. Свой каталог, права, open_basedir и перенос логов 1.x — безопасность логов.
  4. По желанию — ротация логов.

Как пользоваться

Проблема в своём классе — трейт, две строки настройки, одна строка записи:

\Bitrix\Main\Loader::includeModule('shef.problems');

final class OrdersExchange
{
    use \Shef\Problems\Factory\Trait\LoggerProblems;

    public function __construct()
    {
        $this->initLogger();
    }

    public static function getClassName(): string { return static::class; }
    public static function getModuleId(): string { return 'acme.exchange'; }

    public function run(): void
    {
        $this->logger->error('1С не ответила', ['itemId' => 1024]);
    }
}

Запись ляжет в sh_problems_problem.log в каталоге логов и в журнал событий. Отладка на экран администратору:

\Shef\Problems\Logger::PrHtml->getLogger()->debug('что пришло', $fields);

Логгеру можно отдать не только строку, а исключение, Result или Error ядра, массив — он сам разложит их по сообщению и контексту.

Логи и журнал — в меню административной части: Настройки → Учёт проблем.

Документация

Вся документация — в репозитории:

Развитие

  • робот для бизнес-процессов
  • проблема — задачей
  • проблема — письмом через Битрикс24
  • проблема — в чат Битрикс24
  • проблема — администратору через CAdminNotify::Add
  • проблема — пользователю в верхнюю панель Битрикс24
  • проблема — в Telegram

Лицензия

MIT

Источник: problems/README.md — правки туда, сайт пересобирается сам.
CtrlI