логи, журнал событий, учёт проблем
Модуль Битрикс24 «коробки» и БУС для логирования и учёта проблем. Подключает Monolog и даёт готовые логгеры: в файл, в журнал событий Битрикса, на экран администратору. Проблемы разложены по типам — общие, синхронизация, товары, продажи, — и у каждой есть ответственный из настроек модуля.
Опирается на shef.options: его нужно поставить первым.
Порядок шагов важен: сначала shef.options, потом файлы этого модуля, потом
установка в административном разделе, и только потом настройки.
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 лежит внутри
архива, отдельно его ставить не нужно.
Из двух мест, и оба оставлены сознательно:
vendor/.Решает это модуль сам, при каждой загрузке. Composer проекта Битрикс видит,
если путь к composer.json указан в /bitrix/.settings.php, ключ composer.
/home/bitrix/www это /home/bitrix/sh_log. Веб-сервер их не отдаёт,
смотреть — через Настройки → Учёт проблем → Логи. Свой каталог, права,
open_basedir и перенос логов 1.x —
безопасность логов.Проблема в своём классе — трейт, две строки настройки, одна строка записи:
\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
ядра, массив — он сам разложит их по сообщению и контексту.
Логи и журнал — в меню административной части: Настройки → Учёт проблем.
Вся документация — в репозитории:
CAdminNotify::Add